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 回答