0

公式ガイドに従ったのですが、アプリを通知用に何度も登録するだけで、ユーザーがオプトアウトする方法がないことがわかりました。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の他の場所で行われましたdevicereadyappreadyは、両方の後に起動する合成イベントでdevicereadyあり、ローカル データ ストレージ ライブラリによってトリガーされる別のイベントです。

4

1 に答える 1

2

あなたは正しいことをしています。

残念ながら、Android にはプッシュ通知の有効/無効ステータスを取得するための API が用意されていないため、これが唯一のオプションです。そして、この設定はオプションの奥深くに埋もれており、ユーザーがそれを見つけることができるとは思えません.

とにかく、登録情報をローカルに保持することが、現時点で唯一のオプションです。

于 2013-03-27T13:47:13.010 に答える