2016-07-28 33 views
2

我正在使用三個iDevices進行測試。 設備1觸發CKSubscription變更通知。僅針對當前設備重置CKNotificationInfo徽章值

設備2和3接收該通知並且徽章數量增加到1。

我編碼重置徽章數量爲0,每次應用程序涉及到前景像的下方。(在applicationDidBecomeActive :)

CKModifyBadgeOperation *badgeResetOperation = [[CKModifyBadgeOperation alloc] initWithBadgeValue:0]; 
[badgeResetOperation setModifyBadgeCompletionBlock:^(NSError * operationError) { 
    if (!operationError) { 
     [UIApplication sharedApplication].applicationIconBadgeNumber = 0; 
    } 
}]; 
[[CKContainer defaultContainer] addOperation:badgeResetOperation]; 

如果用戶在設備2上點擊我的應用程序,上面的代碼將被執行。它運作良好。徽章號碼重置爲0.但問題是,設備3上的徽章號碼也同時變爲0,即使我沒有在設備3上點按我的應用。

我希望設備3的徽章號碼增加因爲用戶沒有點擊它。

API參考說'此操作對象可以更新當前設備或所有用戶設備的徽章。'

https://developer.apple.com/reference/cloudkit/ckmodifybadgeoperation?language=objc

我認爲這意味着有隻重置單個設備我想辦法。

請有人指導我如何實現它。

回答

1

如果您的3臺設備都使用相同的iCloud ID登錄,它們將共享相同的徽章數量。徽章存儲在用戶的iCloud帳戶中。這就是爲什麼在每個使用該帳戶登錄的設備上都是一樣的。

將您的其他設備登錄到不同的iCloud帳戶並再次運行您的測試。這應該工作。

此外,保存您的訂閱時,請確保您多次保存相同的內容,否則您將獲得同一通知的多個標籤。在再次保存之前檢查訂閱是否存在。

+0

我明白這個機制,但是,我猜想有一種設置每個設備的徽章號碼的方法,即使他們登錄在同一個iCloud帳戶。因爲API參考說'這個操作對象可以爲所有用戶的設備更新「CURRENT DEVICE OR」的徽章。 –