使用Handkit和Watchkit将iPhone应用程序带到前台

时间:2015-04-09 00:27:22

标签: ios iphone swift handoff nsuseractivity

我有一个简单的项目,用户点击Apple Watch上的按钮和iPhone上的一些音频播放,这很容易使用openParentApplication方法并在AppDelegate中使用handleWatchKitExtensionRequest代码。但是,虽然这在模拟器中有效,但如果iPhone应用程序尚未打开,它将无法在实际设备上运行。我试图找到是否可以使用其他方法,即使iPhone应用程序尚未打开也能正常工作。

我已经阅读了stackoverflow回答here,可以使用Handoff(部分)将手机应用程序带到前台,使用WKInterfaceController updateUserActivity:userInfo:webpageURL:UIApplicationDelegate application:continueUserActivity:restorationHandler。但是,作为一名新开发人员,我正在努力研究如何在没有任何示例的情况下正确地做到这一点。任何人都可以提供一些示例代码,说明这将如何工作,哪些都一起用于在iPhone应用程序上运行一些代码?

1 个答案:

答案 0 :(得分:26)

  1. 在您的iphone应用程序的plist中注册您的活动类型名称。添加名为NSUserActivityTypes的行并使其成为一个数组。例如:
  2. enter image description here

    1. 在AppDelegate中包含continueUserActivity:方法。例如:

      -(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
              {
                  // Extract the payload
                  NSString *type = [userActivity activityType];
                  NSDictionary *userInfo = [userActivity userInfo];
      
                  // Assume the app delegate has a text field to display the activity information
                  NSLog(@"User activity is of type %@, and user info %@", type, userInfo);
      
                  restorationHandler(@[self.window.rootViewController]);
      
                  return YES;
              }
      
    2. 在watchkit控制器的awakeWithContext中,添加updateUserActivity方法。

      [self updateUserActivity:@"com.co.YourApp.watchkitextension.activity" userInfo:@{@"yo": @"dawg"} webpageURL:nil];
      
    3. 现在,您应该在监视应用中打开所选的视图控制器后看到应用程序图标。