推送通知徽章自动递增

问题描述 投票:26回答:5

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

我考虑过要在服务器端(提供者)检查新消息并发送数字作为徽章。

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

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

iphone objective-c iphone-sdk-3.0 push-notification
5个回答
30
投票

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

当然,只有在用户收到通知且应用未运行/他们选择不启动通知时,这是可以的。如果用户启动了该应用程序或已经运行了该应用程序,则可以进行任何有关增量的操作。

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


2
投票

这是可能的,但需要权衡。

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

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


1
投票

您可以尝试App42后端服务,该服务提供服务器端维护的推送标志计数的自动递增。有关更多详细信息,请单击blog的链接。这是博客文章内容:

以下是通过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 –此方法用于更新用户采购的所有设备的推送标志计数。在这种情况下,我们假设用户使用他的名字注册了多个设备。


0
投票

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

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

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


-14
投票

发送+1以获得徽章计数,它将自动将徽章计数增加1。

© www.soinside.com 2019 - 2024. All rights reserved.