公式ガイドに従ったのですが、アプリを通知用に何度も登録するだけで、ユーザーがオプトアウトする方法がないことがわかりました。getRemoteNotificationStatus
プラグインの Android バージョンではメソッドが使用できないため、デバイスが登録されているかどうかを確認する方法はないようです。どうすればこの情報を入手できますか?
アプリの設定として保存して、外部に問い合わせる必要がないように考えましたが、最近のバージョンの Android では、アプリの外部で通知を無効にできます。これにより、アプリ内の別の設定と登録解除/競合が発生しますか?
これまでの私のコード(私がテストしている):
(function() {
var pushPrefApply = function() {
app.pushPref(function(pushPref) {
console.log('pushPref', pushPref);
if (!pushPref) {
window.plugins.pushNotification.unregisterDevice(
function() {
console.log('unreg ok', arguments);
},
function() {
console.log('unreg fail', arguments);
}
);
return;
}
window.plugins.pushNotification.registerDevice(
{
projectid: '123456789012',
appid : 'F0000-BAAAA'
},
function(pushToken) {
console.log('reg ok', arguments);
},
function(status) {
console.log('reg fail', arguments);
}
);
});
};
//UI code for changing push preference goes here, calls pushPrefApply
$document.on('appready', function() {
pushPrefApply();
});
})();
$document
はタイプミスではなく、すでに定義されています。app.pushPref
プリファレンスフェッチ関数です。window.plugins.pushNotification.onDeviceReady
の他の場所で行われましたdeviceready
。appready
は、両方の後に起動する合成イベントでdeviceready
あり、ローカル データ ストレージ ライブラリによってトリガーされる別のイベントです。