【问题标题】:Increment app badge on recieving ACS push while app on background: Titanium在后台应用程序接收 ACS 推送时增加应用程序徽章:Titanium
【发布时间】:2013-02-14 16:21:40
【问题描述】:

我的应用程序使用 ACS 推送通知。我已经在我的应用程序中实现了应用程序徽章。但问题是 appBadge 在接收推送通知时不会自动递增。我在我的应用中使用了以下代码

var deviceToken;
Titanium.Network.registerForPushNotifications({
        types: [
            Titanium.Network.NOTIFICATION_TYPE_BADGE,
            Titanium.Network.NOTIFICATION_TYPE_ALERT,
            Titanium.Network.NOTIFICATION_TYPE_SOUND
        ],
        success:function(e)
        {
            deviceToken = e.deviceToken;
            SubscribeToPush(channelName, deviceToken, type);
        },
        error:function(e)
        {
            alert("Error: "+ ((e.error && e.message) || JSON.stringify(e.error)));
        },
        callback:function(e)
        {
            var badgeCount = Ti.UI.iPhone.getAppBadge();
            badgeCount = badgeCount + 1;
            Ti.UI.iPhone.setAppBadge(badgeCount);
        }
    });

我读到here"callback function" 在收到新的推送通知时调用。所以我将以下代码设置为回调来增加徽章。

callback:function(e)
{
     var badgeCount = Ti.UI.iPhone.getAppBadge(); //Will return the app badges
     badgeCount = badgeCount + 1;                 //Incrementing the appbadge
     Ti.UI.iPhone.setAppBadge(badgeCount);        //Setting new appbadge
}

它在应用程序打开时工作,当它收到通知时,回调被触发,当应用程序进入后台时,徽章出现。但是我想在应用程序处于后台或退出时增加徽章编号。谁能帮我解决这个问题?

【问题讨论】:

标签: push-notification titanium titanium-mobile acs badge


【解决方案1】:

经过大量研究,我创建了一个示例应用程序,用于在接收服务器推送通知时增加 appBadge。 您可以从Increment the ios appBadge Titanium下载代码。下载资源文件夹后请按照步骤操作。

  1. 在 Titanium 中创建一个新的移动应用程序项目。
  2. 将资源文件夹替换为您下载的文件夹。
  3. 登录 www.appcelerator.com,转到您的应用程序,然后转到管理 ACS
  4. 新建用户为admin,设置用户为admin
  5. 使用管理员用户创建一个新的访问控制列表 (ACS),并将 ACL 名称指定为 'SampleApp'
  6. 为推送通知上传 p12 证书
  7. 现在将应用程序安装到您的 iPhone 上并运行应用程序...

应用程序的每个用户都应该有一个自定义对象来存储通知的数量。我在发送推送时更新它们,并在恢复/打开应用程序时清除它。我用我的 iPhone 设备对其进行了测试,它运行良好。但是,由于我必须多次调用 ACS,因此需要一些延迟。

更新:最新的 Titanium SDK 默认支持此功能。

你需要做的是改变payload如下:

var payload = {"alert":"Hi, This is a test notification", badge: "+1"};
/*+1 will increment the current appbadge by 1, number of appbadge will be saved in the ACS*/
Cloud.PushNotifications.notify({
    channel: 'friend_request',
    payload: payload
}, function (e) {
    if (e.success) {
       alert('Success');
    } else {
        alert('Error:\n' +
        ((e.error && e.message) || JSON.stringify(e)));
    }
});

这将使 appbadge 增加一。当您恢复/打开您的应用程序时,您需要重置 appbadge,如下所示

Cloud.PushNotifications.resetBadge({
   device_token : myDeviceToken
}, function(e){
       if(e.success){
             Ti.UI.iPhone.setAppBadge(0);
       } else {
             //Error callback
       }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2018-08-21
    • 1970-01-01
    相关资源
    最近更新 更多