gpt4 book ai didi

ios - 在 ios7 中更新推送通知的角标(Badge)计数

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:17:11 25 4
gpt4 key购买 nike

我正在开发推送通知 应用程序,但角标(Badge)计数 在收到通知时并未增加。我在 stack overflow 中看到了很多例子,但没有一个是有用的。

任何人都可以建议我如何解决这个问题...提前致谢!

我的服务器端 PHP 代码:

<?php

// Put your device token here (without spaces):
$deviceToken = 'c0d35d5f5ab179f0a93cb7c6b89b96b305ad3517b24e454abd4517e2323f4a7a';

// Put your private key's passphrase here:
$passphrase = '12345push';

// Put your alert message here:
$message = 'My First push notification!';
//$badge = 3;
////////////////////////////////////////////////////////////////////////////////

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);

echo 'Connected to APNS' . PHP_EOL;

// Create the payload body
$body['aps'] = array(
'alert' => $message,
'sound' => 'default',
'badge'=>($badge != (null) ? $badge + 1 : 1)
);

// Encode the payload as JSON
$payload = json_encode($body);

// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;

// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));

if (!$result)
echo 'Message not delivered' . PHP_EOL;
else
echo 'Message successfully delivered' . PHP_EOL;

// Close the connection to the server
fclose($fp);

在 appdelegate.m 中

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

{
NSString* alertValue = [[userInfo valueForKey:@"aps"] valueForKey:@"badge"];
NSLog(@"my message-- %@",alertValue);
int badgeValue= [alertValue intValue];
[UIApplication sharedApplication].applicationIconBadgeNumber += badgeValue;
}

最佳答案

通常在所有应用程序中,未读通知计数都保存在服务器中。 当服务器向特定设备 token 服务器发送推送通知时,服务器会发送角标(Badge)计数以及有效负载

您的服务器逻辑需要跟踪正确的角标(Badge)计数并适本地发送它。

{
"aps" :
{
"alert" : "Your notification message",
"badge" : badgecount ,
"sound" : "bingbong.aiff"
}
}

编辑

您已在 didReceiveRemoteNotification 方法中设置角标(Badge)计数。在这个名为 appbadge 的方法是从推送通知设置之前,所以你必须从服务器设置正确的角标(Badge)..

解决方法:

因此创建一些 web 服务,在该 web 服务中发送 deviceToken 和 currentBadge 以存储在服务器上,下次发送推送时,检查 token 的最后一个角标(Badge)值,然后发送它。

关于ios - 在 ios7 中更新推送通知的角标(Badge)计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20367038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com