2013-02-28 122 views
1

我的應用程序使用ACS推送通知。我在應用程序中實施了應用程序徽章。但問題是appBadge在收到推送通知時不會自動遞增。我在我的應用程序應用程序在後臺接收ACS推送時遞增應用程序徽章:Titanium

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 
} 

它的工作原理,而應用程序是開放的,當它收到一個通知,回調被解僱,當應用程序去背景,徽章得到顯現。但是我想在應用程序處於後臺或退出時增加徽章號碼。任何人都可以幫我解決這個問題嗎?

+0

我在此處添加了一個請求:https://jira.appcelerator.org/browse/TC-1937 – Anand 2013-03-22 04:47:00

回答

1

經過大量研究後,我創建了一個示例應用程序,以在接收服務器推送通知的同時遞增appBadge。 您可以從Increment the ios appBadge Titanium下載代碼。請在下載資源文件夾後按照步驟操作。

  1. 在Titanium中創建一個新的移動應用程序項目。
  2. 將資源文件夾替換爲您下載的資源文件夾。
  3. 登錄www.appcelerator.com,去你的應用程序,然後去管理ACS
  4. 創建一個新用戶作爲管理員,設置用戶爲管理員
  5. 創建使用admin用戶的新的訪問控制列表(ACS)並給出了ACL名稱爲「SampleApp」
  6. 上傳的推送通知的P12證書
  7. 立即安裝該應用程序到您的iPhone和運行應用程序...

應用程序的每個用戶都應該有一個存儲通知數的自定義對象。我在發送推送時更新它們,並在恢復/打開應用程序時將其清除。我用我的iPhone設備進行了測試,效果非常好。然而,由於我必須多次撥打ACS,因此需要一些延遲。

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

你需要做的是改變有效載荷如下:

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。當您恢復/打開您的應用程序時,您需要重置該軟件,如下所示

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