如何控制何时提示用户iOS中的推送通知权限

前端之家收集整理的这篇文章主要介绍了如何控制何时提示用户iOS中的推送通知权限前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经使用 Swift和Xcode 6构建了一个应用程序,并且使用了Parse框架来处理服务.

在遵循关于如何设置推送通知的Parse教程之后,该指令表明我将推送通知放在App Delegate文件中.

这是我已经添加到App代理文件代码

  1. @UIApplicationMain
  2. class AppDelegate: UIResponder,UIApplicationDelegate {
  3.  
  4. var window: UIWindow?
  5. var pushNotificationsController: PushNotificationController?
  6.  
  7.  
  8. func application(application: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
  9.  
  10. // Register for Push Notifications
  11. self.pushNotificationsController = PushNotificationController()
  12.  
  13. if application.respondsToSelector("registerUserNotificationSettings:") {
  14. println("registerUserNotificationSettings.RegisterForRemoteNotificatios")
  15. let userNotificationTypes: UIUserNotificationType = (.Alert | .Badge | .Sound)
  16. let settings:UIUserNotificationSettings = UIUserNotificationSettings(forTypes: userNotificationTypes,categories: nil)
  17. application.registerUserNotificationSettings(settings)
  18. application.registerForRemoteNotifications()
  19. }
  20.  
  21. return true;
  22. }
  23.  
  24. func application(application: UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
  25. println("didRegisterForRemoteNotificationsWithDeviceToken")
  26. let installation = PFInstallation.currentInstallation()
  27. installation.setDeviceTokenFromData(deviceToken)
  28. installation.saveInBackground()
  29. }
  30. }

那么会发生什么呢,一旦应用程序第一次启动,就会提示用户授予这些权限.

我想做什么,只是在一些动作发生之后才提示这些权限(即在应用程序的功能演练期间),所以我可以提供一些更多的上下文,为什么我们希望他们允许推送通知.

是否只需复制相关ViewController中的以下代码,我将期望提示用户

  1. // In 'MainViewController.swift' file
  2.  
  3. func promptUserToRegisterPushNotifications() {
  4. // Register for Push Notifications
  5. self.pushNotificationsController = PushNotificationController()
  6.  
  7. if application.respondsToSelector("registerUserNotificationSettings:") {
  8. println("registerUserNotificationSettings.RegisterForRemoteNotificatios")
  9. let userNotificationTypes: UIUserNotificationType = (.Alert | .Badge | .Sound)
  10. let settings:UIUserNotificationSettings = UIUserNotificationSettings(forTypes: userNotificationTypes,categories: nil)
  11. application.registerUserNotificationSettings(settings)
  12. application.registerForRemoteNotifications()
  13. }
  14. }
  15.  
  16. func application(application: UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
  17. println("didRegisterForRemoteNotificationsWithDeviceToken")
  18. let installation = PFInstallation.currentInstallation()
  19. installation.setDeviceTokenFromData(deviceToken)
  20. installation.saveInBackground()
  21. }

谢谢!

解决方法

答案很简单如果您希望在其他时间提示用户,例如按下按钮,请将有关请求的代码简单地移动到该函数中(或从其他地方调用promptUserToRegisterPushNotifications()).

希望有帮助:)

猜你在找的iOS相关文章