###前提・実現したいこと
PhonegapでiOSアプリを開発しています。
phonegap-plugin-pushを使って、
プッシュ通知を受信した時にバッジ数を増やす処理を
実装しようとしています。
プッシュ通知の送信サーバー側では、バッジの値を設定せず、
アプリがプッシュ通知を受信した時に、今のバッジ数を取得し、
1つインクリメントしてバッジを設定するという処理を実現したいです。
###発生している問題・エラーメッセージ
push.getApplicationIconBadgeNumberと push.setApplicationIconBadgeNumberを使って、 アプリがForegroundの時は下記のコードで動きましたが、 アプリがBackground、Suspended、Not runningの時は 動きませんでした。 下記のページ https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/API.md#pushfinishsuccesshandler-errorhandler-id---ios-only には push.setApplicationIconBadgeNumberの説明が 「Set the badge count visible when the app is not running」 push.getApplicationIconBadgeNumberの説明が 「Get the current badge count visible when the app is not running」 となっておりますが、わたしが書いたコードでは、 アプリがForegroundの時でも動作していますし アプリがNot runningの時にプッシュ通知を送信しても バッジ数は変わりませんでした。 そもそも、上記ページに書かれている仕様が、間違っているのでしょうか?
###該当のソースコード
var app = { // Application Constructor initialize: function() { this.bindEvents(); }, bindEvents: function() { document.addEventListener('deviceready', this.onDeviceReady, false); }, onDeviceReady: function() { console.log('Received Device Ready Event'); console.log('calling setup push'); console.log('platform : '+device.platform); if ((device.platform == 'iOS') || (device.platform == 'Android')) { app.setupPush(); } }, setupPush: function() { console.log('calling push init'); var push = PushNotification.init({ "android": { "senderID": "xxxxxxxxxx" }, "browser": {}, "ios": { "sound": true, "vibration": true, "badge": true }, "windows": {} }); push.on('registration', function(data) { console.log('registration event: ' + data.registrationId); var oldRegId = localStorage.getItem(key); console.log('oldRegId : ' + oldRegId); if (oldRegId !== data.registrationId) { console.log('different ID'); localStorage.setItem(key, data.registrationId); } }); push.on('error', function(e) { console.log("push error = " + e.message); }); push.on('notification', function(data) { console.log('notification event'); navigator.notification.alert( data.message, // message null, // callback data.title, // title 'Ok' // buttonName ); push.getApplicationIconBadgeNumber(function(count) { console.log('get badge : ' + count); count++; push.setApplicationIconBadgeNumber(function() { console.log('set badge : ' + count); }, function() { console.log('set badge error'); }, count); }, function() { console.log('get badge error'); }); }); } };
###試したこと
プッシュ通知の送信サーバー側で
content-available=1
を設定しても、しなくても、動作に変化はありませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
crodova version : 7.1.0
platform iOS : 4.5.4
phonegap-plugin-push : 1.10.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。