我正在实施从苹果手表应用程序切换到我的iphone上的目标应用程序。
在其中一个WatchKit Extension视图控制器上,我有以下代码:
myActivity = [[NSUserActivity alloc]
initWithActivityType: @"com.newsApp.shownews"];
myActivity.userInfo = @{@"newsID":[self.newsID objectAtIndex:0]};
myActivity.title = @"shownews";
myActivity.delegate = self;
[myActivity becomeCurrent];
然后我在我的目标iphone应用程序的appDelegate内的continueUserActivity
中添加以下代码:
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
{
if ([userActivity.activityType isEqual: @"com.newsApp.shownews"]) {
UIStoryboard *mainStoryboard = self.window.rootViewController.storyboard;
ShownewsViewController *detailViewController = (ShownewsViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"ShownewsViewController"];
detailViewController.post_ID = [userActivity.userInfo objectForKey:@"newsID"];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
[self.window.rootViewController presentViewController:navigationController animated:YES completion:NULL];
}
return YES;
}
问题是userActivity.userInfo
为空,但userActivity.activityType
已正确设置为com.newsApp.shownews
。
答案 0 :(得分:0)
尝试在NSUserActivity对象上设置requiredUserInfoKeys。
答案 1 :(得分:0)
要继续活动从观看到 iPhone 应用,请使用NSUserActivity Xcode 8 Swift-3: -
观看目标:
@IBAction func navigateToiPhoneApp() {
// let userActivity = NSUserActivity(activityType: "WatchKitHandoff.Notification.com")
//userActivity.ac
self.updateUserActivity("com.WatchKit.Notification.", userInfo:["key":"value"], webpageURL:nil)
}
iPhone目标:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
print("continue activity2")
restorationHandler([self.window!.rootViewController!])
return true
}
模拟器在Xcode-8.1
之前不支持Handoff