是否可以使用 Apple Watch 打开您的 iPhone 应用程序?

Is it possible to open your iPhone App using the Apple Watch?

我想显示用户在 Apple Watch 上收到的文本的快速摘要。然后,他们可以通过单击 iWatch 应用程序内的按钮来阅读 iPhone 上的其余文本。我不认为这是目前可能的,但如果是的话,请告诉我我需要做什么才能实现这一目标。

您可以使用

在后台打开您的 iOS 应用
+ (BOOL)openParentApplication:(NSDictionary *)userInfo
                        reply:(void (^)(NSDictionary *replyInfo,
                                        NSError *error))reply

您的 iOS 应用程序将获得

- (void)application:(UIApplication *)application
handleWatchKitExtensionRequest:(NSDictionary *)userInfo
              reply:(void (^)(NSDictionary *replyInfo))reply

因此,如果您的 iOS 应用程序已经 运行ning 您可以使用它向应用程序提供信息。但是,你不能让你的 iOS 应用程序 运行 在前台,它必须由用户启动。您可以将其余文本保存到共享设置中 and/or 使用 openParentApplication 在后台将其传递到您的应用程序。然后,当用户打开您的 iOS 应用程序时,您可以向他们显示其余文本。

不,无法通过手表在 iPhone 上打开您的应用程序,但您可以在后台打开您的应用程序。

假设您想在手表上查看新闻,为此您需要数据。您可以通过 iPhone 应用程序获取该数据:openParentApplication:handleWatchKitExtensionRequest:

这个答案解释了如何做到这一点:

如果您需要在前台打开父应用,请使用 Handoff!

https://developer.apple.com/handoff/

示例

两者共享的地方:

static let sharedUserActivityType = "com.yourcompany.yourapp.youraction"
static let sharedIdentifierKey = "identifier"

在您的手表上:

updateUserActivity(sharedUserActivityType, userInfo: [sharedIdentifierKey : 123456], webpageURL: nil)

你在 App Delegate 中的 iPhone:

func application(application: UIApplication, willContinueUserActivityWithType userActivityType: String) -> Bool {
    if (userActivityType == sharedUserActivityType) {
        return true
    }
    return false
}

func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]!) -> Void) -> Bool {
    if (userActivity.activityType == sharedUserActivityType) {
        if let userInfo = userActivity.userInfo as? [String : AnyObject] {
            if let identifier = userInfo[sharedIdentifierKey] as? Int {
                //Do something
                let alert = UIAlertView(title: "Handoff", message: "Handoff has been triggered for identifier \(identifier)" , delegate: nil, cancelButtonTitle: "Thanks for the info!")
                alert.show()
                return true
            }
        }
    }
    return false
}

最后(这一步很重要!!!):在你的Info.plist(s)