14

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

我在这里阅读了stackoverflow的答案,可以使用Handoff(部分)将电话应用程序带到前台,使用WKInterfaceController updateUserActivity:userInfo:webpageURL:and UIApplicationDelegate application:continueUserActivity:restorationHandler。但是,作为一名新开发人员,我正在努力弄清楚如何在没有任何示例的情况下正确执行此操作。任何人都可以提供一些示例代码来说明这将如何工作,它们一起用于在 iphone 应用程序上运行一些代码?

4

1 回答 1

26
  1. 在您的 iphone 应用程序的 plist 中注册您的活动类型名称。添加一个名为 NSUserActivityTypes 的行并将其设为数组。例如:

在此处输入图像描述

  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];
    

在手表应用程序中打开选定的视图控制器后,您现在应该会看到应用程序图标。

于 2015-05-05T05:54:12.157 回答