【问题标题】:iOS Universal Links opens Safari and the app in the backgroundiOS Universal Links 在后台打开 Safari 和应用程序
【发布时间】:2021-11-19 12:55:20
【问题描述】:

我已经实现了 Apple 记录的 iOS 通用链接,将我的 apple-app-site-association 文件托管在服务器的根目录中。我可以看到该链接工作正常,当在测试设备上触摸时,它确实确认在上下文菜单中打开应用程序标题。但是,点击时,该链接将首先打开应用程序,然后通过 Safari 浏览器访问我网站上的相关页面,将应用程序置于后台。

有没有人遇到过同样的问题?如果是这样,有没有办法解决它?这是我的示例 apple-app-site-association 文件:

{
"applinks": {
    "apps": [],
    "details": [
        {
            "comment": "Some comment.",
            "appID": "TEAMID.com.companyname.bundleidentifier.ios",
            "paths": [
                "NOT /_/*", "/*"
            ]
        }
    ]
}

当然,我在这个示例中屏蔽了 TEAMID 和捆绑包 ID

【问题讨论】:

  • 你是如何在你的应用程序中处理传入的 url 的?你不能简单地打电话给open。如果 iOS 应用程序在通用链接上调用 open,则假定该应用程序无法处理该链接并且它想在 Web 浏览器中打开它。您需要直接路由到应用中的相关屏幕以响应传入的 url
  • 嗨@Paulw11 iOS 应用程序正在正确处理 url,应用程序实际上是通过链接打开的,但放在后台,Safari 网页进入前台。我应该注意到该应用程序是通过 TestFlight 安装在设备中的,所以我想知道这是否是 TestFlight 人工制品
  • 不,如果您的应用正在打开,然后 Safari 正在打开,那么您的应用会导致 Safari 打开。 edit你的问题,展示你如何处理传入的链接。

标签: ios ios-universal-links


【解决方案1】:

正如@Paulw11 所指出的,问题在于应用程序方面以及我们如何处理链接。现在已解决,但此处参考的是处理通用链接的示例代码:

// Universal links:
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
   // App was opened from a Universal Link
   if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
       [self application:application openURL:userActivity.webpageURL sourceApplication:nil annotation:[NSDictionary dictionary]];
   }
   return YES;
}

【讨论】:

    猜你喜欢
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多