在显示之前Parse.com chek推送通知

时间:2016-01-17 10:55:31

标签: swift parse-platform notifications push-notification

如何在显示之前检查推送通知?

我想要检查数据,如果数据不正确,我不想要显示通知

我的代码:

我只是使用简单的Parse.com示例。这是我的AppDelegate类

let defaults = NSUserDefaults.standardUserDefaults()

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        Parse.setApplicationId("//",
            clientKey: "//")


        if application.applicationState != UIApplicationState.Background {

            let preBackgroundPush = !application.respondsToSelector("backgroundRefreshStatus")
            let oldPushHandlerOnly = !self.respondsToSelector("application:didReceiveRemoteNotification:fetchCompletionHandler:")

            var pushPayload = false

            if let options = launchOptions {
                pushPayload = options[UIApplicationLaunchOptionsRemoteNotificationKey] != nil
            }
            if (preBackgroundPush || oldPushHandlerOnly || pushPayload) {


                PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)
            }
        }

        var notificationActionAccept :UIMutableUserNotificationAction = UIMutableUserNotificationAction()
        notificationActionAccept.identifier = "FIRST_ACTION"
        notificationActionAccept.title = "Įvertinti"

        var notificationCategory:UIMutableUserNotificationCategory = UIMutableUserNotificationCategory()
        notificationCategory.identifier = "CallNotificationCategory"
        notificationCategory .setActions([notificationActionAccept], forContext: UIUserNotificationActionContext.Default)

        let settings = UIUserNotificationSettings(forTypes: [.Alert, .Sound, .Badge], categories: NSSet(array:[notificationCategory]) as! Set<UIUserNotificationCategory>)

        UIApplication.sharedApplication().registerUserNotificationSettings(settings)
        UIApplication.sharedApplication().registerForRemoteNotifications()

        if let launchOptions = launchOptions as? [String : AnyObject] {
            if let notificationDictionary = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey] as? [NSObject : AnyObject] {
                self.application(application, didReceiveRemoteNotification: notificationDictionary)
            }
        }

        return 
    }

    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
    {
            return 
    }

    func applicationWillResignActive(application: UIApplication) { 
    }

    func applicationDidEnterBackground(application: UIApplication) {
    }

    func applicationWillEnterForeground(application: UIApplication) {  
    }

    func applicationDidBecomeActive(application: UIApplication) {    
    }

    func applicationWillTerminate(application: UIApplication) { 
    }

    func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
        let installation = PFInstallation.currentInstallation()
        installation.setDeviceTokenFromData(deviceToken)
        installation.saveInBackground()
    }

    func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
        if error.code == 3010 {
            print("Push notifications are not supported in the iOS Simulator.")
        } else {
            print("application:didFailToRegisterForRemoteNotificationsWithError: %@", error)
        }
    }

    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {

        print(userInfo)

        PFPush.handlePush(userInfo)
        if application.applicationState == UIApplicationState.Inactive {
            PFAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo)
        }
    }
}

我真的需要帮助:/

1 个答案:

答案 0 :(得分:0)

不,遗憾的是,当您的应用处于后台时,您无法停止显示通知。 application:didReceiveRemoteNotification:只是一个委托方法,在通知显示时调用,它无法控制是否应显示通知。