Я хочу показать краткую сводку текста, который пользователь получает на своих Apple Watch. Затем они могут прочитать остальную часть текста на своем iPhone, нажав кнопку в приложении iWatch. Я не думаю, что в настоящее время это возможно, но если это возможно, сообщите мне, что мне нужно сделать, чтобы выполнить это.
Можно ли открыть приложение для iPhone с помощью Apple Watch?
Ответы (3)
Вы можете открыть приложение 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 уже запущено, вы можете использовать это, чтобы предоставить информацию приложению. Однако вы не можете заставить приложение iOS работать на переднем плане, это должно быть инициировано пользователем. Вы можете сохранить остальную часть текста в общих настройках и/или передать его своему приложению в фоновом режиме с помощью openParentApplication
. Затем, когда пользователь открывает ваше приложение для iOS, вы можете показать ему остальную часть текста.
Если вам нужно открыть родительское приложение на переднем плане, используйте Handoff!
https://developer.apple.com/handoff/
Пример:
Где-то общий для обоих:
static let sharedUserActivityType = "com.yourcompany.yourapp.youraction"
static let sharedIdentifierKey = "identifier"
на ваших часах:
updateUserActivity(sharedUserActivityType, userInfo: [sharedIdentifierKey : 123456], webpageURL: nil)
на вашем iPhone в App Delegate:
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(ах)
Нет, открыть ваше приложение на iPhone через часы невозможно, НО вы можете открыть свое приложение в фоновом режиме.
Допустим, вы хотите просматривать новости на своих часах, и для этого вам нужны данные. Вы получаете эти данные через приложение для iPhone с помощью: openParentApplication:
и handleWatchKitExtensionRequest:
.
Как это сделать, объясняется в этом ответе: ">Как отправить данные с iphone на watchkit в swift