标签: cknotification

在iOS 11中不推荐使用CKModifyBadgeOperation.任何人都知道另一种方法吗?

我搜索过,我找不到一个例子.我也尝试过修改此代码(在别处推荐(CloudKit不会将我的徽章计数重置为0):

func resetBadgeCounter() {
    let badgeResetOperation = CKModifyBadgeOperation(badgeValue: 0)
    badgeResetOperation.modifyBadgeCompletionBlock = { (error) -> Void in
        if error != nil {
            print("Error resetting badge: \(String(describing: error))")
        }
        else {
            UIApplication.shared.applicationIconBadgeNumber = 0
        }
    }
    CKContainer.default().add(badgeResetOperation)
}
Run Code Online (Sandbox Code Playgroud)

这暂时有效,但不再受支持,很快就会消失.

我想也许我应该使用CKModfyRecordsOperation或其他一些CKDatabaseOperation,但我甚至无法猜测如何.

badge cloudkit cknotification swift4 ios11

10
推荐指数
1
解决办法
301
查看次数

Cloudkit:CKNotificationInfo徽章值永不减少

我为cloudkit设置了订阅通知.这是我的代码:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"];
    CKSubscription *subscription = [[CKSubscription alloc]
                                    initWithRecordType:recordType
                                    predicate:predicate
                                    options:CKSubscriptionOptionsFiresOnRecordCreation];
    CKNotificationInfo *notificationInfo = [CKNotificationInfo new];
    notificationInfo.alertLocalizationKey =@"New record in cloudKit";
    notificationInfo.shouldBadge = YES;
    notificationInfo.soundName = UILocalNotificationDefaultSoundName;
    notificationInfo.shouldSendContentAvailable = YES;
    subscription.notificationInfo = notificationInfo;
    CKContainer *container = [CKContainer defaultContainer];
    CKDatabase *publicDatabase = [container publicCloudDatabase];
    [publicDatabase saveSubscription:subscription
                   completionHandler:^(CKSubscription *subscription, NSError *error) {
                       if (!error)
                       {
                           NSLog(@"no error");
                       }
                       else
                       {
                           NSLog(@"error%@", error);
                       }

                       }];
Run Code Online (Sandbox Code Playgroud)

工作得很好.问题是徽章,他们看起来像cloudKit没有重置徽章号码,并且即使我将徽章计数设置为零,也会不断增加.

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    application.applicationIconBadgeNumber = 0;
}
Run Code Online (Sandbox Code Playgroud)

当应用程序收到新通知时,从0到5(每个新通知增加1,下一次将是6)

你们中的任何人都知道如何从cloudkit中跟踪正确的徽章数量(在Objective-C中)

iphone ipad icloud cloudkit cknotification

4
推荐指数
1
解决办法
698
查看次数

如何将CKQueryNotification连接到CKRecord或CKSubsription?

我需要一种方法将CKQueryNotification连接到CKRecord或CKSubscription,这样我就可以在多种记录类型上接收更新/插入/删除.我成功收到CKNotifications,这是有效载荷:

{
    ck =     {
        ce = 2;
        cid = "<my cloud container id>";
        nid = "<unknown guid>";
        qry =         {
            dbs = 2;
            fo = 1;
            rid = "<the record id>";
            sid = "<THIS IS THE SUBSCRIPTION ID>";
            zid = "_defaultZone";
            zoid = "_defaultOwner";
        };
    };
}
Run Code Online (Sandbox Code Playgroud)

我可以通过通知有效负载获取订阅ID,我可以将订阅ID绑定到知道记录类型的本地缓存,但我想使用CKFetchNotificationChangesOperation来检索未读通知,此时我只有一个CKQueryNotification对象.

CKQueryNotification对象只有一个CKRecordID,据我所知,我无法从CKRecordID获得CKRecord.我可以在我的容器中对我的所有CKRecord-> recordType执行查询,但这似乎不对.

任何帮助表示赞赏!

ios cloudkit cknotification

2
推荐指数
1
解决办法
743
查看次数

标签 统计

cknotification ×3

cloudkit ×3

badge ×1

icloud ×1

ios ×1

ios11 ×1

ipad ×1

iphone ×1

swift4 ×1