WCSession
のAPIを時計に使用すると、iOSアプリがまだ実行されていない場合は、バックグラウンドで起動します。
時計の拡張コード:だからあなたのような何かを行うことができ
[[WCSession defaultSession] sendMessage:@{@"cmd":@"sendUpdate"} replyHandler:nil errorHandler:^{ /*handle errors*/ }]
iOSアプリのコード:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
<...>
[[WCSession defaultSession] setDelegate:self];
[[WCSession defaultSession] activateSession];
<...>
}
- (void)session:(WCSession *)session activationDidCompleteWithState:(WCSessionActivationState)activationState error:(nullable NSError *)error {
}
- (void)sessionDidBecomeInactive:(WCSession *)session
{}
- (void)sessionDidDeactivate:(WCSession *)session
{
[session activateSession];
}
- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *, id> *)message {
NSString *cmd = message[@"cmd"];
if ([cmd isEqual:@"sendUpdate"]) {
[self sendUpdate];
}
}
- (void)sendUpdate {
WCSession *session = [WCSession defaultSession];
if (session.isWatchAppInstalled && session.activationState == WCSessionActivationStateActivated) {
[[WCSession defaultSession] transferUserInfo:[self dictionaryFullOfUpdates]];
}
}
これは、あなたはおそらくしたいものよりも明らかに簡単ですが、あなたを与える必要がありますアイデア
このようなきれいで簡単なコードをありがとう! – Mrug