How to set up push notifications in Swift

后端 未结 11 1188
生来不讨喜
生来不讨喜 2020-11-27 10:48

I am trying to set up a push notification system for my application. I have a server and a developer license to set up the push notification service.

I am currently

11条回答
  •  借酒劲吻你
    2020-11-27 11:33

    While the answer is given well to handle push notification, still I believe to share integrated complete case at once to ease:

    To Register Application for APNS, (Include the following code in didFinishLaunchingWithOptions method inside AppDelegate.swift)


    IOS 9

    var settings : UIUserNotificationSettings = UIUserNotificationSettings(forTypes:UIUserNotificationType.Alert|UIUserNotificationType.Sound, categories: nil)
    UIApplication.sharedApplication().registerUserNotificationSettings(settings)
    UIApplication.sharedApplication().registerForRemoteNotifications()
    

    After IOS 10

    Introduced UserNotifications framework:

    Import the UserNotifications framework and add the UNUserNotificationCenterDelegate in AppDelegate.swift


    To Register Application for APNS

    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in
    
        // If granted comes true you can enabled features based on authorization.
        guard granted else { return }
    
        application.registerForRemoteNotifications()
    }
    

    This will call following delegate method

    func application(application: UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    //send this device token to server
    }
    
    //Called if unable to register for APNS.
    func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
    
    println(error)
    
    }
    

    On Receiving notification following delegate will call:

    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
    
        println("Recived: \(userInfo)")
       //Parsing userinfo:
       var temp : NSDictionary = userInfo
       if let info = userInfo["aps"] as? Dictionary 
                {
                    var alertMsg = info["alert"] as! String
                    var alert: UIAlertView!
                    alert = UIAlertView(title: "", message: alertMsg, delegate: nil, cancelButtonTitle: "OK")
                    alert.show()
                }
    }
    

    To be identify the permission given we can use:

    UNUserNotificationCenter.current().getNotificationSettings(){ (setttings) in
    
            switch setttings.soundSetting{
            case .enabled:
                print("enabled sound")
    
            case .disabled:
                print("not allowed notifications")
    
            case .notSupported:
                print("something went wrong here")
            }
        }
    

    So the checklist of APNS:

    • Create AppId allowed with Push Notification
    • Create SSL certificate with valid certificate and app id
    • Create Provisioning profile with same certificate and make sure to add device in case of sandboxing(development provisioning)

    Note: That will be good if Create Provisioning profile after SSL Certificate.

    With Code:

    • Register app for push notification
    • Handle didRegisterForRemoteNotificationsWithDeviceToken method
    • Set targets> Capability> background modes> Remote Notification
    • Handle didReceiveRemoteNotification

提交回复
热议问题