首页 文章

如何知道浏览器中的按钮单击操作

提问于
浏览
0

我使用自定义网址方案在浏览器中打开网址 . 我在浏览器中有一个按钮 . 如何在浏览器中点击按钮时在应用程序中知道 .

下面是我的ref代码:

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
 }

我可以使用通用链接还是深层链接?

2 回答

  • 0

    在Universal 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];
        }
    }
    
  • 0

    使用通用链接

    从浏览器链接时,您绝对应该使用Universal Links . 如果用户未安装应用程序并且他们单击URI方案,则浏览器将显示错误消息 . 有很多方法可以解决这个问题,比如javascript redirect,但是这些方法非常黑巧,而且往往不会起作用 .

    检测浏览器中的点击

    在应用程序已从浏览器获得控制权之前,不会调用应用程序委托中的功能,因此无法从应用程序本身检测浏览器单击 . 您将不得不使用一些javascript单击事件处理程序来检测它,但所有切换都在操作系统级别处理,因此您将无法控制它 .

    从深层链接注册打开

    深层链接打开您的应用后,它将调用三个功能之一 .

    From URI Scheme (myapp://)

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

    From Universal Link ONLY WHEN APP IS RUNNING IN BACKGROUND

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

    From Universal Link if app is closed

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

    这最后一个得到了大多数人,因为他们认为 continueUserActivity 应该被调用,但它确实是这个功能,他们将深层链接url放在启动选项参数中 .

    使用分支机构或第三方

    最后,您可以使用Branch,在必要时利用URI和通用链接,并将所有应用程序委托功能转发到一个回调,这样您就不必在三个不同的位置更新路由逻辑 .

相关问题