【问题标题】:iOS9 URL Scheme return to launching appiOS9 URL Scheme 返回启动应用
【发布时间】:2016-09-25 14:03:24
【问题描述】:

iOS9 对 URL 方案的工作方式进行了一些更改,例如url 白名单等。在 iOS9 之前,我们允许我们的应用程序从另一个应用程序启动,执行一些操作,然后将控制权返回给启动应用程序,结束一些自定义数据,使启动应用程序能够导航到特定(成功或失败)视图.

对启动应用操作的返回控制是通过随后的 openURL: 调用来执行的,该调用指定启动应用的 url,并返回要返回的数据。这一切在 iOS8 中运行得非常好,但是在 iOS9 中,我们现在在状态栏中有“返回 appName”按钮作为返回启动应用程序的推荐方式。不幸的是,这不允许我们从我们的应用程序返回任何结果数据。如果我们继续使用 openURL: 将控制权返回给 iOS9 中的启动应用程序,这将导致启动应用程序“返回我们的应用程序”中出现相同的状态栏按钮,这是完全错误的。

那么,问题是我们如何在 iOS9 中将控制权从我们的应用启动的地方返回给应用?

【问题讨论】:

  • 这个问题不应该被标记为scheme,就像在方案编程语言中一样。

标签: ios url ios9


【解决方案1】:

对于深度链接,我使用了第三方分支

在 AppDelegate 中,这由下面给出的两个 UIApplicationDelegate 处理

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    NSLog(@"opened app from URL %@", [url description]);
    return [[Branch getInstance] handleDeepLink:url];
}

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

    BOOL handledByBranch = [[Branch getInstance] continueUserActivity:userActivity];
    return handledByBranch;
}

Reference Link for Deeplinking

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2016-03-23
    • 2013-03-21
    • 2010-11-23
    相关资源
    最近更新 更多