如何从Apple Watch启动iOS应用程序?

16
有没有办法从Apple Watch启动iOS应用程序? 编辑: - 尝试使用下面的两个API,但都不起作用:-
Apple Watch代码
在interfaceController.m中调用
+ (BOOL)openParentApplication:(NSDictionary *)userInfo reply:(void(^)(NSDictionary *replyInfo, NSError *error)) reply;    // launches containing iOS application on the phone. userInfo must be non-nil

iOS 代码

在 Appdelegate.m 中调用

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

1
是的,我能够传递数据,但我想使用以上API从iWatch启动iOS应用程序。 - Hussain Shabbir
我猜它还在开发中,我们需要等待他们添加相应的方法。目前我们只有非常有限的方法可用,但我相信他们很快会添加的。 - Aadil Keshwani
这是链接,其中提到了使用上述API但不起作用的情况 https://github.com/NilStack?tab=repositories - Hussain Shabbir
我猜测您正在使用Xcode 6.3 beta版。您应该使用6.2进行Watch开发。我正在使用这些API,使用6.2对我有效。 - Stephen Johnson
显示剩余2条评论
1个回答

22

答案实际上非常有趣。 答案是

您可以通过openParentApplication:reply:方法在后台打开应用程序。如果应用程序已经被终止或者在后台,它将启动应用程序在后台运行。如果应用程序已经在前景中,则只会调用该应用程序。

您无法从Watch Extension将iOS应用程序带到前台,如果它没有在前台运行,这是违反苹果公司政策的。虽然您可以在iOS模拟器中实际执行此操作,但是苹果公司已确认您不能在设备上执行此操作或提交解决方案到App Store。有关详细信息,请参见开发者论坛上的article

如果您需要将iOS应用程序带到前台,目前唯一的部分实现方法是使用HandoffAPI。这里是另一个链接Handoff编程指南。仔细阅读这两个文档后,您将了解Handoff系统的工作原理。
要实现此功能,您需要在Watch Extension中添加WKInterfaceControllerupdateUserActivity:userInfo:webpageURL:。然后,您需要在iOS应用程序中实现UIApplicationDelegateapplication:continueUserActivity:restorationHandler:。不幸的是,在您拥有Apple Watch之前,您将无法测试此解决方案,但文档明确表示这将得到支持。

1
谢谢您的回答,但我如何使用Handoff API将iOS应用程序带到前台?您有任何可以完成此操作的示例代码吗? - Hussain Shabbir
嗨 @Hussain,我更新了我的答案,以指导您如何将 Handoff 添加到您的手表扩展和 iOS 应用程序中。 - cnoon
1
很抱歉,你现在无法测试。就像我们其他人一样,你需要等到拥有实际设备才能进行测试。 - cnoon
嗨Cnoon,如果我不想传递webPageURL参数,那么它如何工作呢?因为我没有任何webPageUrl要传递,只需要从手表上启动iOS应用程序即可。 - Hussain Shabbir
1
@cnoon 我能从 iPhone 打开手表应用吗? - Tejas Ardeshna
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接