1

我正在实现从 Apple Watch 应用程序到 iPhone 上目标应用程序的切换。

在其中一个 WatchKit 扩展视图控制器上,我有以下代码:

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.

4

2 回答 2

0

尝试在您的 NSUserActivity 对象上设置requiredUserInfoKeys 。

于 2015-11-19T14:41:51.487 回答
0

要继续 从WatchiPhone应用程序的活动,请使用 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
        }

更新 info.plist 在此处输入图像描述

模拟器在 Xcode-8.1 之前不支持 Handoff

于 2016-11-30T10:08:15.227 回答