相关疑难解决方法(0)

在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不会将我的徽章计数重置为0

我已经尝试了很多东西,似乎无法重置来自cloudKit的通知的徽章数量.有没有其他人遇到过这个问题.这是我尝试过的:

1)将徽章计数本地设置为0

  application.applicationIconBadgeNumber = 0; (temporarily removes the badge count).
Run Code Online (Sandbox Code Playgroud)

没运气...

2)调用服务器以清除徽章计数

 CKModifyBadgeOperation *oper = [[CKModifyBadgeOperation alloc] initWithBadgeValue:0];
  [oper start];
Run Code Online (Sandbox Code Playgroud)

没运气...

3)拉入所有通知更改并将其全部标记为已读

NSMutableArray *array = [NSMutableArray array];
CKFetchNotificationChangesOperation *operation = [[CKFetchNotificationChangesOperation alloc] initWithPreviousServerChangeToken:nil];
operation.notificationChangedBlock = ^(CKNotification *notification) {
    [array addObject:notification.notificationID];
};
operation.completionBlock = ^{
        CKMarkNotificationsReadOperation *op = [[CKMarkNotificationsReadOperation alloc] initWithNotificationIDsToMarkRead:array];
        [op start];
};
[operation start];
Run Code Online (Sandbox Code Playgroud)

再一次没有运气......

任何建议将不胜感激!谢谢,克里斯

push-notification apple-push-notifications ios8 cloudkit cksubscription

7
推荐指数
1
解决办法
1418
查看次数