检查用户是否已启用通知的Swift ios始终返回true

时间:2016-11-10 23:35:06

标签: ios swift onesignal

我正在尝试检查用户是否为我的应用启用了远程通知,但即使我禁用/卸载我的应用,它也始终返回。

我正在检查此代码:

if UIApplication.shared.isRegisteredForRemoteNotifications == false {
    OneSignal.registerForPushNotifications()
    print("Notifications is off")
} else {
   print("Notifications is on")
}

但这将始终运行:print("Notifications is on")

那么我如何检查用户是否已启用我的应用程序的通知?

2 个答案:

答案 0 :(得分:1)

var $radio = $('#theseCodes');
var radioValue = $radio.val();
var radioName = $radio.attr('name');
var $cell = $radio.closest('td');
var $select = $cell.find('select');
$select.detach();
$cell.empty().append('<input type="hidden" name="' + radioName + '" value="' + radioValue + '" />').append($select);

这似乎有效,不确定它是否正确?

答案 1 :(得分:0)

实际上这将始终返回true,只有在从未询问过远程通知权限的情况下,它才会返回false。这意味着,一旦您询问了用户,无论他回答了什么,这将始终返回true

存在的原因是,当你请求许可时,它会直接注册用户(甚至没有等待他的回答,你可以通过在用户的回答之前设置断点来检查代理)。然后,如果用户拒绝了该许可,则该设备仍将被注册,但是在用户在常规设置中打开通知之前,通知将不会显示。

这不是一个错误,Apple这样做是为了避免dev继续要求权限。因此,实际上无法确定用户是否已接受或拒绝许可:/