3

表示されるデータを更新する一環として、コンプリケーションにデータを送信しようとしていdidReceiveRemoteNotificationますが、これとコンプリケーション自体との関係をセットアップする方法に関する Apple からのドキュメントはほとんどないようです。

ComplicationControllerが作成されたら、も作成WCSessionしてデリゲート呼び出しのリッスンを開始する必要がありますか? 私はそれを配置することができました.getPlaceholderTemplateForComplicationこれは、iOSアプリケーションが実行されているときは機能するようですが、アプリが強制終了された(または実行されなくなった)ときは機能しません.

iOS アプリが実行されているかどうかにかかわらず、リモートの JSON プッシュ通知の一部として時計にデータを取得するための優れたガイドがあるかどうか知りたいです。

4

1 に答える 1

1

WWDC の WatchConnectivity セッションを見ることをお勧めします。これは、更新の複雑さを最後にかなりカバーしているためです。

要約すると、iOS アプリでは、送信するコンテンツを取得したら、次のようになります。

    NSDictionary *userInfo = // data to send
    [[WCSession defaultSession] transferComplicationUserInfo:userInfo];
...
- (void)session:(WCSession * __nonnull)session didFinishUserInfoTransfer:(WCSessionUserInfoTransfer *)userInfoTransfer error:(nullable NSError *)error {
    // handle error
    NSLog(@"%s %@ (%@)", __PRETTY_FUNCTION__, userInfoTransfer, error);
}

そして時計側:

@property WCSession *session;
...
    _session = [WCSession defaultSession];
    _session.delegate = self;
    [_session activateSession];
...
- (void)session:(WCSession *)session didReceiveUserInfo:(NSDictionary<NSString *, id> *)userInfo {
   // persist data and trigger reload/extend of complication(s)
}
于 2015-10-05T17:44:14.617 に答える