检查用户是不是已在 Swift 中注册本地通知时出错
Posted
技术标签:
【中文标题】检查用户是不是已在 Swift 中注册本地通知时出错【英文标题】:Error while checking if user has registered for local notifications in Swift检查用户是否已在 Swift 中注册本地通知时出错 【发布时间】:2016-03-17 01:53:44 【问题描述】:我正在尝试检查我的用户是否已接受接收来自我的应用的通知。我使用的是UIApplication.sharedApplication().isRegisteredForRemoteNotifications()
,但它总是说这是错误的,即使我已接受接收它们。
现在我稍微改了一下,我用这段代码来检查:
func checkRegisteredUserForNotifications()
if UIApplication.sharedApplication().currentUserNotificationSettings() != nil
notificationStatus.hidden = false
UIView.animateWithDuration(0.3, animations: () -> Void in
self.notificationStatus.alpha = 1.0
)
notificationStatus.text = "Thats greay!"
btn.hidden = false
UIView.animateWithDuration(0.3, animations: () -> Void in
self.btn.alpha = 1.0
)
else
notificationStatus.hidden = false
UIView.animateWithDuration(0.3, animations: () -> Void in
self.notificationStatus.alpha = 1.0
)
notificationStatus.text = "That's bad"
btn.hidden = false
UIView.animateWithDuration(0.3, animations: () -> Void in
btn.alpha = 1.0
)
print("not registered!!")
但它总是给我真实的,即使我拒绝接收通知。 为什么会这样?
更多信息:我有一个按钮,当用户点击它时,它会调用函数 registerForRemoteNotifications(),并在 10 秒后调用该函数来检查用户是否已接受。
感谢任何帮助,谢谢!
【问题讨论】:
我猜是因为currentUserNotificationSettings
不会返回nil
,即使你还没有注册。
那我怎么查?
看这里...***.com/questions/26051950/…
您使用的是本地通知还是推送通知?问题和标签不清楚。
@TroyT 使用本地
【参考方案1】:
if UIApplication.sharedApplication().currentUserNotificationSettings.types == .None
// not registered
else
// registered in some way
这只是检查是否有任何允许的通知设置类型(有 3 种,您可以将它们任意组合:徽章、声音、警报)。如果您需要特定的类型,您可以根据需要修改 if 语句。
【讨论】:
感谢您的回答!我明天只能测试这段代码,如果它有效,我会告诉你,但它应该。我认为问题在于我正在检查它是否为 nil,但我猜它永远不会是 nil。再次感谢!另外,与这个问题无关,我如何检测应用程序的首次启动并呈现视图控制器? @HenriqueDourado 我不能在这里给你一个完整的答案,但你基本上使用 NSUserDefaults。这是popular question in Objective-C 和this answer in Swift 了解更多信息。以上是关于检查用户是不是已在 Swift 中注册本地通知时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何检查用户是不是已在 ejabberd 服务器中注册或未使用 asmack
在 ios 的 Facebook 登录中检查是不是已在此应用中注册