菜鸟教程小白 发表于 2022-12-13 02:44:22

ios - 如何通知另一台设备 CloudKit 记录已更新?


                                            <p><p>CKSubscription 文档说:当记录修改导致订阅触发时,服务器会向具有该订阅的<strong>所有设备</strong>发送推送通知,但对记录进行原始更改的设备除外。</p>

<p>假设我有两台设备:设备 1 是 iPad,设备 2 是 iPhone,都使用 <strong>相同</strong> iCloud 帐户登录。假设两台设备都订阅了某种记录类型的记录更新。</p>

<p>我的代码看起来像这样(我已经取出了一些家务)</p>

<pre><code>NSPredicate *predicate2 = ;
NSPredicate *predicate2 = init];
notificationPublic.shouldBadge =YES;
notificationPublic.desiredKeys = @[@&#34;fromMemberNameText&#34;];
notificationPublic.shouldSendContentAvailable = YES;


if ([ objectForKey:@&#34;TickleRecordUpdateSubscription&#34;] == nil) {

    [cloudManager subscribe:@&#34;TickleRecord&#34; public: YES options:CKSubscriptionOptionsFiresOnRecordUpdate predicate:predicate2 notification:notificationPublic completionHandler:^(CKSubscription *subscription, NSError *operationError) {

      if (operationError) {

       NSLog(@&#34;An error occured in %@: %@&#34;, NSStringFromSelector(_cmd), operationError);



      } else{
      [ setObject:subscription.subscriptionID forKey:@&#34;TickleRecordUpdateSubscription&#34;];
      [ setObject:@&#34;TickleRecordUpdateSubscription&#34;forKey:subscription.subscriptionID ];

      }
    }];
</code></pre>

<p>在我看来,当一台设备更新记录时,应该通知另一台设备。但这不是正在发生的事情 - 没有通知。在 WWDC 2014 Advanced iCloud 视频中,他们谈到了当一台设备将通知标记为已读时会收到通知,但我也没有成功。</p>

<p>当另一台设备登录到同一帐户更新记录时,是否有人成功通知了一台设备?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我遇到了同样的问题。我得到了这个订阅:</p>

<pre><code>NSPredicate *predicate = initWithRecordID:self.userRecordId action:CKReferenceActionNone]];
CKSubscription *subscription = [ initWithRecordType:@&#34;Message&#34; predicate:predicate options:CKSubscriptionOptionsFiresOnRecordCreation];
subscription.notificationInfo = ;
subscription.notificationInfo.shouldSendContentAvailable = YES;
subscription.notificationInfo.soundName = UILocalNotificationDefaultSoundName;
subscription.notificationInfo.shouldBadge = YES;
CKDatabase *publicDatabase = [ publicCloudDatabase];
;
</code></pre>

<p>这样我就可以从一台设备创建记录,并在另一台设备上收到通知,登录到同一个 iCloud 帐户。</p>

<p>编辑:我刚刚意识到您在询问记录<em>更新</em>,而不是创建,但也许我的回答仍然可以提供帮助。当我遇到这个问题时,我发现一件奇怪的事情是,在我为 CKNotificationInfo 的 soundName 属性设置了一个值后,我开始接收通知。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何通知另一台设备 CloudKit 记录已更新?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/26486087/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/26486087/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何通知另一台设备 CloudKit 记录已更新?