【问题标题】:Is it possible to change NSUserActivity's userInfo from another app?是否可以从另一个应用程序更改 NSUserActivity 的 userInfo?
【发布时间】:2020-03-22 20:02:17
【问题描述】:

我正在尝试使用以下通用链接从应用 A 打开应用 B:

@IBAction func openButtonPressed(_ sender: Any) {
    if let appURL = URL(string: "https://website.com/section/Paris") {
        UIApplication.shared.open(appURL) { success in
            if success {
                print("The URL was delivered successfully.")
            } else {
                print("The URL failed to open.")
            }
        }
    } else {
        print("Invalid URL specified.")
    }
}

在App B的AppDelegate -> application continueUserActivity restoreHandler方法中,它调用了另一个处理userActivity的函数。 这里有一个对 NSUserActivity 的 userInfo 的检查。 它正在检查 NSUserActivity 的 userInfo 属性中的键 PageName,并根据该值为 Activity 分配一个类型并相应地路由应用程序。

NSString *page = activity.userInfo[@"PageName"];
if ([page isEqualToString:@"Places"]) {
    return UserActivityTypePlaces;
} else {
    return UserActivityTypeLink;
}

我想知道是否可以更改或添加键值对到 App A 中的 userInfo,以便 App B 可以将我路由到另一个选项卡。 (在这种情况下,我希望它打开另一个选项卡并搜索通用链接中的位置字符串)

我在 StackOverflow 和 Apple 开发者论坛上检查了与 NSUserActivity 的 userInfo 相关的其他问题,但他们没有在调用应用程序上更改它。(例如在应用程序 A 中)

谢谢

【问题讨论】:

    标签: ios url routing ios-universal-links nsuseractivity


    【解决方案1】:

    我在 App A 中制作了这些:

     let activity = NSUserActivity(activityType: NSUserActivityTypeBrowsingWeb)
     activity.title = "Places"
     activity.userInfo = ["Page" : "Places"]
     let userInfoSet:Set = ["Page"]
     activity.requiredUserInfoKeys = userInfoSet
     self.userActivity = activity
     self.userActivity?.becomeCurrent()
    

    并添加了 NSUserActivityDelegate 方法:

    override func updateUserActivityState(_ activity: NSUserActivity) {
            let dict:Dictionary = ["Page":"Places"]
            userActivity?.addUserInfoEntries(from: dict)
    }
    

    但是 NSUserActivity 对象不是从一个应用程序到另一个应用程序的东西。因此,此更改仅适用于应用 A。

    希望这对其他人也有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      相关资源
      最近更新 更多