如何通过swift使用自己的php APNS服务器从推送通知中增加徽章号?

如何通过swift使用自己的php APNS服务器从推送通知中增加徽章号?,php,ios,swift,Php,Ios,Swift,现在我正在从事swift的IOS应用程序项目。 因此,每当服务器将通知推送到设备时,我都需要增加徽章编号。 现在它总是1个徽章没有增加 这是我的有效载荷 // Create the payload body $body['aps'] = array( 'alert' => $message, 'sound' => 'default', 'badge' => 1 ); // Encode the payload as JSON $payload =

现在我正在从事swift的IOS应用程序项目。 因此,每当服务器将通知推送到设备时,我都需要增加徽章编号。 现在它总是1个徽章没有增加

这是我的有效载荷

// Create the payload body
$body['aps'] = array(
    'alert' => $message,
    'sound' => 'default',
    'badge' => 1
    );
// Encode the payload as JSON
$payload = json_encode($body);
$messageId = $randomNotiId;

谢谢

您只需在每次推送通知时保存徽章编号,并在用户看到它们时清除所有

您需要在看到时将值上载到服务器,然后当您将通知推送到该用户时,您可以检索他/她有多少通知并使用该数字+1


我认为这是最好的选择,但你可以用NSUserDefaults或类似的东西保存号码,但如果用户删除应用程序并再次对其进行DLs,你就会遇到问题。

这意味着与应用程序无关,只需在服务器上创建一些DB即可。@Norolimba。没那么简单。1) 服务器如何知道用户是否查看了通知?如果应用程序向服务器发送消息,它可以发现,但用户可以在不启动应用程序的情况下查看通知。每次发送推送时都增加一个计数是没有用的,因为推送可能无法发送到设备,因此计数将无效2)应用程序如何知道用户是否已清除所有通知?它无法找到答案。1)是的,每次用户看到通知时,您都需要将通知排入服务器队列以更新号码。如果用户在没有启动通知的情况下看到通知,则它不会计数,这与whatsapp类似,您可以看到通知,但在您启动应用并转到通知之前,不会更改徽章编号。通知怎么可能没有送达呢?如果服务器出现故障,则不要增加该用户的徽章号,您可以在服务器端控制所有这些事情。2)您需要使用“DidReceiveMemoteNotification”来处理通知,并使用它来确保用户已查看该通知,然后将0上载到该用户通知。不知道是否有更好的方法,但在我的情况下,它完美地工作。顺便说一句,如果你找到一个更好的解决方案,请告诉我:)它总是一个,因为你已经将1作为徽章的值。该设备显示您在有效负载中输入的任何值。