首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS,通用链接,Swift。continueUserActivity不调用

iOS,通用链接,Swift。continueUserActivity不调用
EN

Stack Overflow用户
提问于 2016-12-16 19:45:10
回答 4查看 8.8K关注 0票数 5

我致力于我们的iOS应用程序的通用链接实现。

下面是我的一小部分AppDelegate:

代码语言:javascript
运行
复制
private func application(_ application: UIApplication, openURL url: URL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    DeepLinkHelpers.handleUniversalLink(url.absoluteString)
    return true
}

private func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
    DeepLinkHelpers.handleUniversalLink(userActivity.webpageURL?.absoluteString)
    return true
}

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    signalRConnector.launch()

    NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.processRestartSignalRNotification(_:)), name: NSNotification.Name(rawValue: "restartSignalR"), object: nil)

    NotificationCenter.default.addObserver(self,                            selector: #selector(AppDelegate.reachabilityChanged(_:)),
                                           name: ReachabilityChangedNotification,
                                           object: reachability)

    do {
        try reachability.startNotifier()
    } catch {
        Logger.save(text: "Unable to start notifier")
    }
    return true
}

我已经处理了所有其他步骤,以实现通用链接的集成:

  1. 在我们的Web应用程序中发布了apple-app站点关联文件
  2. 在developers.apple.com上打开关联域特性
  3. xcode中指定的关联域
  4. 选中应享权利文件的目标成员资格
  5. xcode说,等待应用程序将手动启动(而不是自动启动)

我做了以下调试工作:

  1. 连接ipad
  2. 用xcode启动项目
  3. 在ipad中打开日历并单击包含在某些事件中的链接。链接有以下格式: app.domain.com/#/123456789
  4. Ipad打开应用程序,但continueUserActivity没有调用,我无法处理url中的代码,以便导航到应用程序中的精确状态。

根据文档,应该执行continueUserActivity。当应用程序在后台运行时和应用程序没有运行时,它都不执行。

提前谢谢你!任何帮助都很感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-17 17:20:14

我怀疑这是因为您已经将continueUserActivity函数标记为private。我从未见过这种情况,事实上,Swift 3在我尝试时会出现一个错误。似乎没有任何这样的代码构造的例子-- 在所有的GitHub

我建议移除private范围。

票数 3
EN

Stack Overflow用户

发布于 2018-10-11 17:26:04

截至iOS 12、SWIFT4.2和Xcode 10,苹果再次将方法签名(restorationHandler类型)更改为

代码语言:javascript
运行
复制
 func application(_ application: UIApplication, continue userActivity: 
NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
票数 23
EN

Stack Overflow用户

发布于 2022-02-07 13:33:15

在ios 13之后,您应该使用ScenDelegate:

代码语言:javascript
运行
复制
//when app is running

func scene(_ scene: UIScene, continue userActivity: NSUserActivity)

//when app is not running 
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41191472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档