Apple Watch アプリから iPhone の宛先アプリへのハンドオフを実装しています。
WatchKit Extension ビューコントローラーの 1 つに、次のコードがあります。
myActivity = [[NSUserActivity alloc]
initWithActivityType: @"com.newsApp.shownews"];
myActivity.userInfo = @{@"newsID":[self.newsID objectAtIndex:0]};
myActivity.title = @"shownews";
myActivity.delegate = self;
[myActivity becomeCurrent];
continueUserActivity
次に、目的の iPhone アプリの appDelegate 内に次のコードを追加します。
-(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
です。