[Titanium]用appcelerator的app management實現Push Notification

LINEで送る
[`evernote` not found]

在「[titanium] Apple Push Notification Services & Titanium SDK 2.0」中,雖然實現了Push Notification,但是,還要自己準備一張php才能做發佈(但其實或許在某些時候這樣反而更能客製化push的時機跟內容也不一定)。
而既然appcelerator已經提供了雲端服務,不用一下實在有點可惜,並且也感謝默司 (Herxun co.) 提供的資料,就照著它做了一點點的修正,實作了這個服務。

不過因為遊戲還是必須有一個自己的資料庫,所以這個例子中等於做了雙重的登入:

var Cloud = require('ti.cloud');
exports.doLogin = function(uinfo) {
	doXHR(function(res){
		Ti.API.info('model.doLogin - onload');
		if(res.id > 0){
			Ti.App.fireEvent("loading:lock");
			Cloud.Users.login({
				login: 'j'+res.id+'@justfly.idv.tw',
				password: res.password,
			}, function(e) {
				Ti.App.fireEvent("loading:unlock");
				if (e.success) {
					Ti.App.fireEvent("login:success",res);
					if(Titanium.Platform.osname == 'android')
						retrieveDeviceTokenAndroid(); //註冊Android Device
					else
						retrieveDeviceTokenApple(); //註冊IOS Device
				} else {
					alert('ACS loginError:\\n' + ((e.error && e.message) || JSON.stringify(e)));
				}
			});
		}else{
			Ti.App.fireEvent("login:error");
		}
	},{
		action:'doLogin',
		name:uinfo.name,
		password:uinfo.password
	});
}

這樣就可以登入acs服務了。至於在acs創建使用者的方式,在「[titanium] Apple Push Notification Services & Titanium SDK 2.0」中的留言裡就蠻完整的,這邊就不多寫嚕。另外提供它註冊硬體的function:

function retrieveDeviceTokenApple(){ //跟APNS 取得Token
	Ti.Network.registerForPushNotifications({
		types : [Ti.Network.NOTIFICATION_TYPE_ALERT, Ti.Network.NOTIFICATION_TYPE_BADGE, Ti.Network.NOTIFICATION_TYPE_NEWSSTAND, Ti.Network.NOTIFICATION_TYPE_SOUND],
		success : function(e) {
			ACSsubscribe(e.deviceToken,'ios');
		},
		error : function(e) {
			alert(e.error);
		},
		callback : function(e) {
			Ti.API.info(JSON.stringify(e.data));
		}
	}); 
}
function ACSsubscribe(deviceToken,osname){
	Cloud.PushNotifications.subscribe({
		channel : 'friend_request',
		device_token : deviceToken,
		type : osname
	}, function(e) {
		if(e.success) {
			Ti.API.info('ACSsubscribe:success');
		} else {
			alert('ACSsubscribe:error:\\n' + ((e.error && e.message) || JSON.stringify(e)));
		}
	}); 
}

然後還必須發佈道實機上才能有效的註冊硬體!看到左上的圖就表示成功啦~

2 則迴響於《[Titanium]用appcelerator的app management實現Push Notification

回應已關閉。