是否可以从另一个应用更改 NSUserActivity 的 userInfo?
Is it possible to change NSUserActivity's userInfo from another app?
我正在尝试使用如下通用 links 从应用程序 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 restorationHandler方法中,调用了另一个处理userActivity的函数。
这里检查 NSUserActivity 的 userInfo。
它正在检查 NSUserActivity 的 userInfo 属性 中的键 PageName,并根据值将类型分配给 activity 并相应地路由应用程序。
NSString *page = activity.userInfo[@"PageName"];
if ([page isEqualToString:@"Places"]) {
return UserActivityTypePlaces;
} else {
return UserActivityTypeLink;
}
我想知道我是否可以更改或添加一个键值对到应用程序 A 中的 userInfo,以便应用程序 B 可以将我路由到另一个选项卡。 (在这种情况下,我希望它打开另一个选项卡并搜索通用 link 中的位置字符串)
我已经在 Whosebug 和 Apple Developer 论坛上检查了与 NSUserActivity 的 userInfo 相关的其他问题,但他们没有在调用应用程序上更改它。(例如在应用程序 A 中)
谢谢
我在 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。
希望这对其他人也有帮助。
我正在尝试使用如下通用 links 从应用程序 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 restorationHandler方法中,调用了另一个处理userActivity的函数。 这里检查 NSUserActivity 的 userInfo。 它正在检查 NSUserActivity 的 userInfo 属性 中的键 PageName,并根据值将类型分配给 activity 并相应地路由应用程序。
NSString *page = activity.userInfo[@"PageName"];
if ([page isEqualToString:@"Places"]) {
return UserActivityTypePlaces;
} else {
return UserActivityTypeLink;
}
我想知道我是否可以更改或添加一个键值对到应用程序 A 中的 userInfo,以便应用程序 B 可以将我路由到另一个选项卡。 (在这种情况下,我希望它打开另一个选项卡并搜索通用 link 中的位置字符串)
我已经在 Whosebug 和 Apple Developer 论坛上检查了与 NSUserActivity 的 userInfo 相关的其他问题,但他们没有在调用应用程序上更改它。(例如在应用程序 A 中)
谢谢
我在 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。
希望这对其他人也有帮助。