0

我开发了一个应用程序,除了在应用程序未运行时更新徽章外,一切正常。

我收到推送通知,但徽章没有任何反应。

应用程序在向 Apple 注册时请求警报和徽章类型。

有任何想法吗?这真让我抓狂。

这是我用来发送推送的代码:

<?php
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsCert = '/usr/local/php/cert.pem';
$apnsPort = 2195;

$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);

$payload['aps'] = array('alert' => 'Oh hai!', 'badge' => 1);
$output = json_encode($payload);
$token = '1234';
$token = pack('H*', str_replace(' ', '', $token));
$apnsMessage = chr(0) . chr(0) . chr(32) . $token . chr(0) . chr(strlen($output)) . $output;
fwrite($apns, $apnsMessage);

socket_close($apns);
fclose($apns);
4

2 回答 2

0

你应该看看以下

  1. 报亭模块

  2. applicationIconBadgeNumber 属性

  3. getApplicationIconBadgeNumber() 方法

  4. setApplicationIconBadgeNumber() 方法

于 2013-07-30T03:43:56.357 回答
0

这是一个使用推送和应用程序徽章的示例,但正如我已经说过的,如果它不能解决您的问题,您也必须向我展示您的移动端代码。这是代码

    Titanium.Network.registerForPushNotifications({  
   types: [  
     Titanium.Network.NOTIFICATION_TYPE_BADGE,  
     Titanium.Network.NOTIFICATION_TYPE_ALERT  
   ],  
   success:function(e)  
   {  
     var deviceToken = e.deviceToken;  
     Ti.API.info("Push notification device token is: "+deviceToken);  
     alert('device token is' +e.deviceToken);  
     Ti.API.info("Push notification types: "+Titanium.Network.remoteNotificationTypes);  
     Ti.API.info("Push notification enabled: "+Titanium.Network.remoteNotificationsEnabled);  
   },  
   error:function(e)  
   {  
     Ti.API.info("Error during registration: "+e.error);  
   },  
   callback:function(e)  
   {  
     // called when a push notification is received.  
    //Titanium.Media.vibrate();  
    var data = JSON.parse(e.data);  
    var badge = data.badge;  
    if(badge > 0){  
     Titanium.UI.iPhone.appBadge = badge;  
    }  
    var message = data.message;  
    if(message != ''){  
     var my_alert = Ti.UI.createAlertDialog({title:'', message:message});  
     my_alert.show();  
    }  
   }  
  });   
 } 

谢谢

于 2013-07-30T06:29:51.740 回答