27

我一直在为我的应用程序实现推送服务,并且一直在考虑应用程序的徽章。我的应用程序是一个邮件应用程序(排序),我想通过推送通知用户添加到收件箱中的新消息,我希望徽章 = 收件箱中的新消息数。

我想在服务器端(提供商)检查新消息并将号码作为徽章发送。

问题是:有没有办法自动增加应用程序的徽章,而不必计算服务器端的徽章值,然后将其作为推送有效负载的一部分发送到 APSN?

也许有一种方法可以在 JSON 徽章字段中发送一些变量,如“++”或类似的东西。有什么技巧吗?还是我需要使用服务器端的计数系统?

4

5 回答 5

30

不,您必须在服务器端进行跟踪。如果您不包含任何徽章值,它将被完全删除。

当然,这只是在用户收到通知并且应用程序未运行/他们选择不启动它的情况下。如果用户启动应用程序或已经运行它,你可以做任何你想做的关于递增的事情。

2014 年 3 月更新:请参阅评论以获取可能的更新。我已经好几年没有推送了,所以我自己无法验证这一点。

于 2009-12-21T21:05:02.637 回答
2

这是可能的,但有一个权衡。

您始终可以将未读总数作为附加 JSON 值作为推送负载的一部分发送(推送忽略它未明确理解的键)。一旦用户打开应用程序,读取值并通过 UIApplication 的applicationIconBadgeNumber属性以编程方式自行调整徽章。

这样做的问题是,即使用户没有打开应用程序(即当他们收到通知并且用户点击“取消”而不是“查看”时),推送也会调整徽章值。在这些情况下,您的徽章不会改变,但是一旦他们运行应用程序(如果他们点击“查看”),您的应用程序就可以正确设置它。

于 2009-12-21T21:22:25.147 回答
2

现在可以让客户端使用 UNNotificationServiceExtension 自动增加徽章。

扩展能够在 iOS 显示通知负载之前对其进行修改。总之,在 UserDefaults 中存储一个标记计数器,并根据需要修改通知的标记计数。您需要添加应用程序组功能以共享用户默认值。

这是详细的分步指南:https ://prodocs.cometchat.com/docs/ios-increment-app-icon-badge-count

于 2020-05-31T11:13:01.480 回答
1

您可以尝试 App42 后端服务,该服务提供在服务器端维护的推送徽章计数的自动增量。有关更多详细信息,您可以关注博客的链接。以下是博文内容:

以下是可以通过 App42 推送通知中的自动增量徽章计数来实现的几个用例。

对于推送徽章自动递增 1,您需要发送推送消息,如下所示。

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService (); // Initializing PushNotification Service.
string userName = "UserName";
string message= "{'badge':'increment'}";
pushNotificationService.SendPushMessageToUser(userName,message, new UnityCallBack())

注意:解释的示例适用于 Unity/C#,但同样的过程也可以应用于其他人。

如果您想为徽章规定任何数字或想要将徽章计数减少为零,您可以使用此方法在用户单击通知时更新计数。在这种情况下,您必须调用 updatePushBadgeforDevice 或 updatePushBadgeforUser。

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService (); // Initializing PushNotification Service.
string userName = "UserName";
string deviceToken = "DeviceToken";
int badges = 10; // For clear count make it 0 
pushNotificationService.UpdatePushBadgeforDevice(userName, deviceToken, badges,  new UnityCallBack());

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService (); // Initializing PushNotification Service.
string userName = "UserName";
int badges = 10; // For clear count make it 0
pushNotificationService.UpdatePushBadgeforUser(userName, badges,  new UnityCallBack());

updatePushBadgeforDevice– 此方法用于更新用户注册的特定设备的推送徽章计数。

updatePushBadgeforUser– 此方法用于更新用户采购的所有设备的推送徽章计数。在这种情况下,我们假设用户在他的名下注册了多个设备。

于 2014-05-22T16:46:38.627 回答
-15

发送+1徽章计数,这将自动将徽章计数增加 1。

于 2015-07-08T20:09:47.433 回答