在Android上使用Appcelerator(ACS)推送通知

时间:2012-06-20 14:58:15

标签: notifications titanium push appcelerator

我正在尝试在Android上使用Appcelerator Cloud Service实现推送通知但是我有一些问题... tiapp.xml在这里:

<sdk-version>2.0.2.GA</sdk-version>
<modules>
<module platform="commonjs" version="2.0.5">ti.cloud</module>
<module platform="android" version="2.0.5">ti.cloudpush</module>
</modules>

包含Android运行时v8和ti.cloudpush,这是我的app.js文件

var win = Ti.UI.createWindow({
backgroundColor:'#ccc',
title:'Android Cloud Push Notification'
})

var CloudPush = require('ti.cloudpush');
CloudPush.debug = true;
CloudPush.enabled = true;
CloudPush.showTrayNotificationsWhenFocused = true;
CloudPush.focusAppOnPush = false;

var deviceToken;

var Cloud = require('ti.cloud');
Cloud.debug = true;

var submit = Ti.UI.createButton({
title : 'Register For Push Notification',
color:'#000',
height : 53,
width : 200,
top : 100,
});
win.add(submit);

submit.addEventListener('click', function(e) {
CloudPush.retrieveDeviceToken({
success: function deviceTokenSuccess(e) {
alert('Device Token: ' + e.deviceToken);
deviceToken = e.deviceToken
loginDefault();
},
error: function deviceTokenError(e) {
alert('Failed to register for push! ' + e.error);
}
});
});

function defaultSubscribe(){
Cloud.PushNotifications.subscribe({
channel: 'chanel',
device_token: deviceToken,
type: 'android'
}, function (e){
if (e.success) {
alert('Subscribed for Push Notification!');
}else{
alert('Error:' +((e.error && e.message) || JSON.stringify(e)));
}
});
}

function loginDefault(e){
//Create a Default User in Cloud Console, and login
Cloud.Users.login({
login: 'android',
password: 'android'
}, function (e) {
if (e.success) {
alert("login success");
defaultSubscribe();
} else {
alert('Error: ' +((e.error && e.message) || JSON.stringify(e)));
}
});
}

CloudPush.addEventListener('callback', function (evt) {
//alert(evt);
alert(evt.payload);
});

CloudPush.addEventListener('trayClickLaunchedApp', function (evt) {
//Ti.API.info('Tray Click Launched App (app was not running)');
alert('Tray Click Launched App (app was not running');
});

CloudPush.addEventListener('trayClickFocusedApp', function (evt) {
//Ti.API.info('Tray Click Focused App (app was already running)');
alert('Tray Click Focused App (app was already running)');
});

win.open();

我在Appcelerator云控制台中有用户android / android用于开发模式。使用debogage模式将我的应用程序启动到我的设备 在应用程序上:只需单击“注册推送通知”按钮,即可看到3个警报 1)设备令牌:“所有号码” 2)登录成功 3)订阅推送通知!

在Appcelerator云控制台上: 日志 - &gt;见登录&amp;订阅,打开它,一切都好 推送通知 - &gt; 1个Android客户端订阅了推送通知。并发送一个通过推送通知与警报&amp;标题 什么都没有出现...尝试重新启动,尝试关闭应用程序并发送另一个,没有。 我正在使用设备(LG OPTIMUS ONE)与Android 2.2.1上网(wifi)。所以,我尝试了另一部手机(SAMSUNG GALAXY S2)3.3.2上网(wifi) 唯一的变化是在云控制台中: 推送通知 - &gt; 2个Android客户端订阅了推送通知。 但它是相同的,没有通知出现。 拜托,我真的需要帮助,我在2天内成功使用iOS,我不明白这里有什么大不了的?

3 个答案:

答案 0 :(得分:2)

我认为我不需要在Google C2DM上注册使用ACS。 ACS使用MQTT协议发送推送。 (我一步一步跟着这个:http://www.titaniumtutorial.com/2012/06/appcelerator-cloud-push-notification-in.html) 您是否已经在Android和Android上通过推送通知完成了一个项目提? 我检查了我的设置,一切都很好。 但是,因为我很绝望,我也注册了C2DM,没有更好的,我想我必须再等一会儿才能测试。

答案 1 :(得分:2)

我使用市场中的upush模块,花了我10分钟才能启动并运行,节省了大量时间。

答案 2 :(得分:1)

您是否已在Google C2DM注册?您需要在https://developers.google.com/android/c2dm/signup填写表单,以便向设备发送通知。确保您在Appcelerator云设置中拥有正确的App ID。