我开发了服务器端应用程序,以在收到新通知后将徽章编号保持为递增或递减,并在看到通知后删除它工作正常。
但是在显示徽章时存在一些问题,实际情况是 - 在设备上收到新通知后,我单击取消按钮,然后徽章编号正确显示,但之后我将打开应用程序并关闭应用程序徽章将被删除。这意味着我没有向服务器发送我看到通知的请求,现在您可以将徽章减一。然后还从应用程序图标中删除了徽章。
我的问题是,当我们打开应用程序时,徽章编号会自动从(应用程序)设备中删除吗?或者它会一直显示,直到我们设置为零?
我开发了服务器端应用程序,以在收到新通知后将徽章编号保持为递增或递减,并在看到通知后删除它工作正常。
但是在显示徽章时存在一些问题,实际情况是 - 在设备上收到新通知后,我单击取消按钮,然后徽章编号正确显示,但之后我将打开应用程序并关闭应用程序徽章将被删除。这意味着我没有向服务器发送我看到通知的请求,现在您可以将徽章减一。然后还从应用程序图标中删除了徽章。
我的问题是,当我们打开应用程序时,徽章编号会自动从(应用程序)设备中删除吗?或者它会一直显示,直到我们设置为零?
它会一直显示,直到您将其设置为零,您可以使用以下代码执行此操作:
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]
编辑:在您收到通知时,在您班级的任何一个或方法中
设置徽章编号更为常见。application:didReceiveRemoteNotification:
application:didFinishLaunchingWithOptions:
UIApplicationDelegate
如果要自动更改图标徽章,请使用以下代码。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
application.applicationIconBadgeNumber = 0;
NSLog(@"userInfo %@",userInfo);
for (id key in userInfo) {
NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
}
[application setApplicationIconBadgeNumber:[[[userInfo objectForKey:@"aps"] objectForKey:@"badge"] intValue]];
NSLog(@"Badge %d",[[[userInfo objectForKey:@"aps"] objectForKey:@"badge"] intValue]);
}
我们还需要更改 php 文件。所以我们可以自动获取更改图标徽章
// Create the payload body
$body['aps'] = array(
'alert' => $message,
'sound' => 'default',
'id' => '135',
'badge' => 8
);