From 07696d8eb7f96d9e7343c1f024f2e8c2469525d9 Mon Sep 17 00:00:00 2001 From: Hailey Date: Sun, 16 Jun 2024 19:09:26 -0700 Subject: [PATCH] handle incoming url for appclip --- app.config.js | 9 +++++++-- modules/BlueskyClip/AppDelegate.swift | 19 +++++++++++++++++-- modules/BlueskyClip/ViewController.swift | 12 +++++++++--- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/app.config.js b/app.config.js index 8a98065033..b90387abc0 100644 --- a/app.config.js +++ b/app.config.js @@ -22,8 +22,6 @@ const DARK_SPLASH_CONFIG_ANDROID = { resizeMode: 'cover', } -const ASSOCIATED_DOMAINS = ['applinks:bsky.app', 'applinks:staging.bsky.app'] - module.exports = function (config) { /** * App version number. Should be incremented as part of a release cycle. @@ -41,6 +39,13 @@ module.exports = function (config) { const IS_TESTFLIGHT = process.env.EXPO_PUBLIC_ENV === 'testflight' const IS_PRODUCTION = process.env.EXPO_PUBLIC_ENV === 'production' + const ASSOCIATED_DOMAINS = [ + 'applinks:bsky.app', + 'applinks:staging.bsky.app', + // When testing local services, enter an ngrok (et al) domain here. It must use a standard HTTP/HTTPS port. + ...(IS_DEV ? ['applinks:dc19-24-237-65-73.ngrok-free.app'] : []), + ] + const UPDATES_CHANNEL = IS_TESTFLIGHT ? 'testflight' : IS_PRODUCTION diff --git a/modules/BlueskyClip/AppDelegate.swift b/modules/BlueskyClip/AppDelegate.swift index 1b02eea07c..a25fde64c9 100644 --- a/modules/BlueskyClip/AppDelegate.swift +++ b/modules/BlueskyClip/AppDelegate.swift @@ -1,17 +1,32 @@ import UIKit +// https://dc19-24-237-65-73.ngrok-free.app/start/haileyok.com/3kuw7byr7gd2x + @main class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? + var controller: ViewController? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { self.window = UIWindow() - let controller = ViewController() + self.controller = ViewController() - self.window?.rootViewController = controller + self.window?.rootViewController = self.controller self.window?.makeKeyAndVisible() return true } + + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { + self.controller?.handleURL(url: url) + return true + } + + func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { + if let incomingURL = userActivity.webpageURL { + self.controller?.handleURL(url: incomingURL) + } + return true + } } diff --git a/modules/BlueskyClip/ViewController.swift b/modules/BlueskyClip/ViewController.swift index 5a3b78f04e..e8f77caa0c 100644 --- a/modules/BlueskyClip/ViewController.swift +++ b/modules/BlueskyClip/ViewController.swift @@ -12,9 +12,15 @@ class ViewController: UIViewController { webView.contentMode = .scaleToFill self.view.addSubview(webView) - - if let url = URL(string: "http://localhost:19006/start/haileyok.com/3kuw7byr7gd2x?clip=true") { - webView.load(URLRequest(url: url)) + + self.webView = webView + } + + func handleURL(url: URL) { + let urlString = "\(url.absoluteString)?clip=true" + + if let url = URL(string: urlString) { + self.webView?.load(URLRequest(url: url)) } } }