estoy trabajando en push notifications
app pero badge count
no es a aumentar cuando la notificación viene.
he visto muchos ejemplos en stack overflow
pero nadie es útil.
¿Alguien puede sugerirme cómo resolver este problema… gracias de antemano!
Mi Lado del Servidor PHP Código:
<?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);
en el 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;
}
uso valor entero en lugar de una cadena en la insignia de la clave
OriginalEl autor guptha | 2013-12-04
Por lo general en todas las aplicaciones, los no leídos de notificación de la cuenta se mantiene en el servidor. Cuando el servidor envía una notificación de inserción a un determinado dispositivo token servidor envía el recuento junto con la carga.
Su lógica de servidor necesita realizar un seguimiento de la correcta recuento y enviar de forma adecuada.
EDITAR
Ha establecido recuento en
didReceiveRemoteNotification
método. antes de que este método se llamaappbadge
se establece a partir de pushnotification, por lo que desde el servidor tiene que establecer la correcta insignia..Solución:
para crear algunos webservice enviar deviceToken y currentBadge en que webservice para almacenar en el servidor, y cuando la próxima vez que usted envíe empuje compruebe la última insignia del valor de la señal y enviarla.
agregar registro de su
userInfo
.puedes comprobar por favor editado mi pregunta…
comprobar respuesta Actualizada.
OriginalEl autor Toseef Khilji
Usted tiene que manejar su servidor de lado cuando se envía una notificación a otro usuario, a continuación, a partir de php al lado de ellos establecer un contador para incrementar la insignia & envío de la notificación a otro usuario después de que al abrir la aplicación de la insignia se establece a null como este :
& a recibir la notificación que establece este código :
OriginalEl autor Gurpreet
Tienes que hacerlo desde el lado del servidor. En mi caso lo he hecho a través de php y mysql. Aquí está mi base de datos

He añadido un campo badgecount y puedo aumentar el recuento, cada vez que me envía el comando al dispositivo con este código
Y yo también se hacer otra api para hacer el badgcount 0 que se llama en el
Así que cuando la notificación se ve de nuevo es cero en el servidor.
OriginalEl autor souvickcse