是否可以从另一个应用程序更改NSUserActivity的userInfo?

问题描述 投票:0回答:1

我正在尝试使用通用链接从应用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->应用程序continueUserActivity restoreHandler方法中,它调用另一个处理userActivity的函数。这里检查NSUserActivity的userInfo。它正在检查NSUserActivity的userInfo属性中的键PageName,并根据该值为活动分配类型并相应地路由应用程序。

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

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

[我已经在StackOverflow和Apple Developer论坛上检查了与NSUserActivity的userInfo有关的其他问题,但他们没有在调用的应用程序上更改它(例如在应用程序A中)​​

谢谢

ios url routing ios-universal-links nsuseractivity
1个回答
0
投票

我在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中有效。

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

© www.soinside.com 2019 - 2024. All rights reserved.