在钛金属加速器上使用推式通知

卡马尔

我正在将Titanium的推送通知功能与Alloy一起用于Android和iOS。我正在初始化Alloy.js的推送通知订阅,即基本上调用CloudPush的retrieveDeviceToken方法来获取设备令牌,然后

 Cloud.PushNotifications.subscribe({
    channel : _channel,
    device_token : _token,
    type : OS_IOS ? 'ios' : 'android'
  }, function(_event) {..}

挑战在于,每次我重新启动应用程序时,alloy.js都会被调用。这意味着将在应用程序每次重新启动时生成一个新的设备令牌,并一次又一次地订阅频道。

我想知道这是否是使用推送订阅的正确方法。有没有一种方法可以避免来自同一设备的这些多个订阅。

Prashant Saini

实际上,您在做正确的事,但“推送通知”背后有一个事实:

  • 无论您调用CloudPush.retrieveDeviceToken()方法多少次,都将始终获得单个设备令牌。
  • 仅当您卸载应用并重新安装时,设备令牌才会有所不同。
  • 因此,要避免多次订阅频道,您要做的就是将设备令牌保存在Ti.App.Properties中,然后检查此属性是否具有值。

参见下面的代码片段:

var CloudPush = require('ti.cloudpush');

            if ( CloudPush.isGooglePlayServicesAvailable() ) {
                CloudPush.retrieveDeviceToken({
                    success : tokenSuccess,
                    error : tokenError
                });

                // Process incoming push notifications
                CloudPush.addEventListener('callback', pushRecieve);

            } else {
                alert("Please enable Google Play Services to register for notifications.");
            }

// Save the device token for subsequent API calls
function tokenSuccess(e) {
    var previousToken = Ti.App.Properties.getString("DEVICE_TOKEN", "");

    var newToken = "" + e.deviceToken;
    Ti.API.info('** New Device Token = ' + newToken);

    if (newToken !== previousToken) {
        Ti.App.Properties.setString("DEVICE_TOKEN", newToken);  

        var Cloud = require("ti.cloud");

        Cloud.PushNotifications.subscribe({
            channel : _channel,
            device_token : newToken,
            type : OS_IOS ? 'ios' : 'android'
        }, function(_event) {});
    }
}


function tokenError(e) {
    alert('Failed to register for push notifications.');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在钛金属加速器上使用推式通知

来自分类Dev

钛制加速器sqlite

来自分类Dev

钛制加速器 CommonJS没有方法

来自分类Dev

找不到钛制加速器模块

来自分类Dev

使用加速器Android获取方向

来自分类Dev

初始屏幕未显示钛制加速器5.2.2GA

来自分类Dev

urllib2错误“在加速器上找不到”

来自分类Dev

次级表单上的Delphi TActionMainMenu加速器

来自分类Dev

在MATLAB UIMenu中使用Enter作为加速器

来自分类Dev

PHP崩溃的加速器

来自分类Dev

清漆HTTP加速器失败

来自分类Dev

清漆HTTP加速器失败

来自分类Dev

Xubuntu:如何重设菜单加速器?

来自分类Dev

简单选择元素加速器

来自分类Dev

创建kivy小部件加速器

来自分类Dev

加速器未显示在 GtkCheckMenuItem 中

来自分类Dev

如何在Ubuntu 18.04 LTS中使用窗口菜单加速器/助记符?

来自分类Dev

使用加速器对视差图像进行归一化

来自分类Dev

如何在Ubuntu 18.04 LTS中使用窗口菜单加速器/助记符?

来自分类Dev

与GPU相比的协处理器加速器

来自分类Dev

JavaFX ContextMenu加速器从错误的选项卡启动

来自分类Dev

Javafx + FXML +加速器-平台独立吗?

来自分类Dev

解析类名称以键入加速器名称

来自分类Dev

WMI加速器和身份验证

来自分类Dev

找不到加速器-创建HAX VM失败

来自分类Dev

可以改变巨型加速器的高度吗?

来自分类Dev

加速器停止孩子解雇父母事件

来自分类Dev

如何获得用于命令ID的键盘加速器?

来自分类Dev

解析类名称以键入加速器名称