1

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です。

4

2 に答える 2

0

Watch から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
        }

info.plist を更新する ここに画像の説明を入力

シミュレーターは、Xcode-8.1 までハンドオフをサポートしていません

于 2016-11-30T10:08:15.227 に答える
0

NSUserActivity オブジェクトにrequiredUserInfoKeysを設定してみてください。

于 2015-11-19T14:41:51.487 に答える