Trên thực tế, trong iOS 10, Thông báo từ xa sẽ tự động gọi didReceiveRemoteNotification
Phương thức trong AppDelegate của bạn.
Bạn có 2 cách để cập nhật số lượng huy hiệu trong nền.
Tôi cũng đã làm điều này cho ứng dụng hiện tại của mình. Bạn cũng không cần Tiện ích mở rộng dịch vụ thông báo.
Cách thứ nhất:
Gửi khóa huy hiệu APS cùng với tải trọng của bạn tới APN.
Thao tác này sẽ cập nhật số lượng huy hiệu theo giá trị Số nguyên trong khối lượng huy hiệu của bạn. Ví dụ:
{
"aps": {
"content-available": 1,
"alert": "Hallo, this is a Test.",
"badge": 2,
"sound": default
}
}
Cách thứ 2:
Bạn có thể chuyển đổi application.applicationState của mình và cập nhật số lượng huy hiệu của bạn khi có applicationState .background
. NHƯNG bạn phải chú ý không đặt tham số khóa huy hiệu trong tải trọng Thông báo của mình khi gửi tới APN ex
{
"aps": {
"content-available": 1
}
}
Xử lý huy hiệu Cập nhật phù hợp với trạng thái ứng dụng:
Đây là mã hoạt động của tôi để cập nhật số lượng huy hiệu mà không có khóa huy hiệu trong tải trọng cho APN.
func application(_ application: UIApplication, didReceiveRemoteNotification
userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("APN recieved")
let state = application.applicationState
switch state {
case .inactive:
print("Inactive")
case .background:
print("Background")
application.applicationIconBadgeNumber = application.applicationIconBadgeNumber + 1
case .active:
print("Active")
}
}
Đặt lại số lượng huy hiệu:
Đừng quên đặt lại số lượng huy hiệu khi ứng dụng của bạn trở lại trạng thái hoạt động.
func applicationDidBecomeActive(_ application: UIApplication) {
application.applicationIconBadgeNumber = 0
}