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

Posted

技术标签:

【中文标题】在 Android 上使用 Appcelerator (ACS) 推送通知【英文标题】:Push notification with Appcelerator (ACS) on Android 【发布时间】:2012-06-20 14:58:15 【问题描述】:

我正在尝试在 android 上使用 Appcelerator 云服务实现推送通知,但我有一些问题......这里的 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 Cloud 控制台上: 日志 -> 查看登录和订阅,打开它,一切正常 推送通知 -> 1 个 Android 客户端订阅了推送通知。并发送一条带有警报和标题的推送通知 什么都没有出现...尝试重新启动,尝试关闭应用程序并发送另一个,什么都没有。 我正在使用带有 android 2.2.1 的设备(LG OPTIMUS ONE),上面有互联网(wifi)。所以,我尝试了另一部带有互联网的手机(SAMSUNG GALAXY S2)3.3.2(wifi) 唯一的变化是在云控制台中: 推送通知 -> 2 个 Android 客户端订阅了推送通知。 但它是一样的,没有通知出现。 拜托,我真的需要帮助,我在 2 天内成功使用 ios,但我不明白这里有什么大不了的?

【问题讨论】:

检查一下:marketplace.appcelerator.com/listing?q=PushClient 我已经创建并发布了一个 Titanium 模块来处理 Android (GCM) 和 iOS (APN) 推送通知。 【参考方案1】:

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

【讨论】:

【参考方案2】:

我在 Marketplace 中使用 upush 模块,我花了 10 分钟来启动并运行它,为我节省了大量时间。

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于在 Android 上使用 Appcelerator (ACS) 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 上使用 RxNetty

无法使用 JavaScript 在 iPhone 上播放声音,但可以在 Android 上播放

Android:在 Android 框架位置 API 上使用 FusedLocationProviderApi 的优缺点是啥?

在android上使用tesseract [关闭]

API 不能在使用 axios 的 React Native 中的旧 Android 设备(Android 7 或更低版本)上工作,但在新设备上工作

在 android 上使用图像精灵