我搜索过,我找不到一个例子.我也尝试过修改此代码(在别处推荐(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,但我甚至无法猜测如何.
我已经尝试了很多东西,似乎无法重置来自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