未使用 Apple 推送通知设置通知徽章计数 - swift - 以编程方式
Posted
技术标签:
【中文标题】未使用 Apple 推送通知设置通知徽章计数 - swift - 以编程方式【英文标题】:notification Badge count not set using Apple Push notification - swift - programmatically 【发布时间】:2021-05-26 11:13:55 【问题描述】:每当使用 Apple 推送通知系统向设备发送新通知时,我都会尝试增加徽章编号。
我正在使用 Firebase Cloud Function 发送通知,这是执行此操作的代码:
exports.onEmotionCreated = functions.firestore
.document("Collection/doc1/Collection/doc2")
.onCreate((snapshot, context) =>
const dict = snapshot.data();
const toUid = dict.toUid;
const fromUid = dict.fromUid;
return db.collection("UserCollection").doc(fromUid).get().then((snap) =>
const fromName = snap.data().name;
return db.collection("UserCollection").doc(toUid).get().then((snapTo) =>
const notificationToToken = snapTo.data().notificationToken;
const notificationContent =
notification:
title: `$fromName has sent you a message`,
body: "Look what's up",
icon: "default",
sound: "customNotificationSound.wav",
,
;
return admin.messaging()
.sendToDevice(notificationToToken, notificationContent)
.then((result) =>
console.log("write done correctly");
);
);
);
);
通知工作正常,但显然在客户端我做错了,这是我实现的代码。
在主视图控制器ViewDidLoad
中,我为键badgeCount
注册了UserDefaults
值:
var dict = [String: Any]()
dict.updateValue(0, forKey: "badgeCount")
UserDefaults.standard.register(defaults: dict)
然后在应用委托中,我尝试使用此函数增加徽章:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
if let userInfoDict = userInfo as? [String : Any]
print("received notification :")
print(userInfoDict)
if var badgeCount = UserDefaults.standard.value(forKey: "badgeCount") as? Int
badgeCount += 1
UserDefaults.standard.setValue(badgeCount, forKey: "badgeCount")
UIApplication.shared.applicationIconBadgeNumber = badgeCount
我还向应用程序提供了所有 ,这显然允许它在应用程序处于后台时接收通知,但它仍然没有被调用。
【问题讨论】:
【参考方案1】:我解决了修改有效负载的问题,添加了这个:
content_available: "true",
const notificationContent =
notification:
title: "New Message",
body: "Watch this notification",
icon: "default",
sound: "notificationSound.wav",
content_available: "true",
,
;
【讨论】:
以上是关于未使用 Apple 推送通知设置通知徽章计数 - swift - 以编程方式的主要内容,如果未能解决你的问题,请参考以下文章
IOS 应用程序中未收到 Firebase 推送通知徽章计数