如何知道浏览器中的按钮点击动作

How to know button click action in browser

我使用自定义 url 方案在 browser.I 中打开 url 在浏览器中只有一个按钮。在浏览器中单击按钮时如何在应用程序中知道。

下面是我的参考代码:

 let customURL = URL(string: customURLScheme)!
    if UIApplication.shared.canOpenURL(customURL) {
        if #available(iOS 10.0, *) {
           // UIApplication.shared.open(customURL)
            UIApplication.shared.open(customURL, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(customURL)
        }
    }

在 Appdelegate 中

       func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

  return true
 }

我可以使用通用链接或深层链接吗?

如果是通用 Link 您应该实施委托方法。希望这个片段会有所帮助。

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler {
        if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURLComponents *URLComponents = [NSURLComponents componentsWithURL:userActivity.webpageURL resolvingAgainstBaseURL:YES];
        [[UniversalLinksManagerLocator model] handleDeepLink:userActivity.webpageURL];
    }
}

使用通用 Links

当从浏览器 linking 时,您绝对应该使用通用 Links。如果用户没有安装该应用程序并单击 URI 方案,浏览器将显示一条错误消息。有很多方法可以解决这个问题,例如 ,但这些方法非常棘手,而且往往不会一直有效。

检测浏览器中的点击

在浏览器已将控制权交给应用程序之前,不会调用应用程序委托中的函数,因此无法从应用程序本身检测到浏览器点击。您将不得不使用一些 javascript 单击事件处理程序来检测它,但是所有切换都是在 OS 级别处理的,因此您将无法控制它。

正在注册一个深度开放 link

一旦深度 [​​=53=] 打开您的应用程序,它将调用三个函数之一。

来自 URI 方案 (myapp://):

application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool

来自通用 Link 仅当应用 运行 处于后台时

(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler

来自通用 Link 如果应用已关闭

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

最后一个得到了大多数人的支持,因为他们认为 continueUserActivity 应该被调用,但它确实是这个函数,他们将深 link url 放在启动选项参数中。

使用 Branch 或第三方

最后,您可以使用 Branch,它在必要时同时利用 URI 和通用 Links,并将所有应用委托函数转发到一个回调,这样您就不必更新路由逻辑在三个不同的地方。