是否可以使用 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)
我想显示用户在 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)