2013-07-29 3 views
0

Я разработал приложение, и все работает отлично, кроме обновления значка , когда приложение не работает.iOS: Значок отказывается обновлять (appcelerator)

Получаю уведомление о толчке, но ничего не происходит с значком.

Приложение запрашивает тип предупреждения и значка при регистрации в 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); 
+0

Не могли бы вы показать нам мобильный код? –

ответ

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(); 
    } 
    } 
    }); 
} 

Thanks

+0

Действительно ли приложение запускает любой код при его выключении? Насколько я понял, ОС должна иметь дело с значками, когда приложение не работает? – grandnasty

+0

НЕТ, он не запускает код, но делает это в функции обратного вызова –

+0

Итак, если это так, то исходный код не имеет значения? Вопрос в том, как можно обновить значок, если приложение не запущено? – grandnasty

Смежные вопросы