2012年10月11日 星期四

push notification for iphone

試了很久的 push notification for iphone

終於

試出來了!

感謝 JustFly 的協助

---------------------------------------

詳細可以參考 這篇

靜下心花點時間按照此步驟一步一步的做

應該可以做到最後產生 .pem檔

此篇在後續titanium的部分





---------------------------------------


// this sets the background color of the master UIView (when there are no windows/tab groups on it)
Titanium.UI.setBackgroundColor('#000');

var win = Titanium.UI.createWindow({
    title : 'Tab 1',
    backgroundColor : '#fff'
});
Titanium.Network.unregisterForPushNotifications;
Ti.API.info("unregisterForPushNotifications");
Titanium.Network.registerForPushNotifications({
        types:[
                
                Ti.Network.NOTIFICATION_TYPE_ALERT,
                Ti.Network.NOTIFICATION_TYPE_BADGE,
                Ti.Network.NOTIFICATION_TYPE_SOUND
        ],
        
        success: successCallback,
        error: errorCallback,
        callback: messageCallback
});

function successCallback(e) {
        alert(e);
        alert( e.deviceToken+'');
        var deviceToken = e.deviceToken;
        // var deviceToken=Ti.Network.remoteDeviceUUID;
         // alert('deviceToken:' + Ti.Network.remoteDeviceUUID);
}

// error callBack
function errorCallback(e) {
        alert(e);
        alert('Push errorCallback' + e.error +'');
}

// message callBack
function messageCallback(e) {
        alert(e);
        alert('Push messageCallback');
}


win.open();


------------------------
記得 e.deviceToken+''要轉成字串才可以抓到deviceToken


抓到deviceToken之後

將deviceToken貼到網站裡的simplePush.php的範例

為了讓push notification能夠傳遞中文

所以要多加上轉換成UTF-8編碼


$message = '傳遞中文通知!';
$message = iconv('Big5','UTF-8',$message);

由於發佈發現一直無法出現傳遞成功的字樣

後來發現式pem路徑問題

我也是將pem放在同樣www的資料夾 (我使用appserv)但就抓不到

後來將程式改成


$apnsCert = dirname(__FILE__) . '/' . 'ck.pem';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert',  $apnsCert );

這樣就可一順利發佈push notification了






沒有留言: