LoginSignup
32
29

More than 5 years have passed since last update.

[iOS] AppDelegateのPush通知用メソッドチートシート

Last updated at Posted at 2015-12-18

毎回コピペするので。

AppDelegate.swift
class AppDelegate: UIResponder, UIApplicationDelegate {

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

        registerForRemoteNotifications(application)

        if let userInfo = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] {
            // アプリが起動していない時にpush通知が届き、push通知から起動した場合
        }

        //...
    }

    //...
}
AppDelegate+RemoteNotifications.swift
import Foundation

extension AppDelegate {

    func registerForRemoteNotifications(application: UIApplication) {
        // 通知登録
        if #available(iOS 8.0, *) {
            let settings = UIUserNotificationSettings(forTypes: [.Badge, .Sound, .Alert], categories:nil)
            application.registerUserNotificationSettings(settings)
            application.registerForRemoteNotifications()
        } else {
            application.registerForRemoteNotificationTypes([.Badge, .Sound, .Alert])
        }
    }

    // Push通知登録完了
    func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData ) {
        print("deviceToken: \(deviceToken.description)")
        let deviceTokenString: String = deviceToken.description
            .stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))
            .stringByReplacingOccurrencesOfString(" ", withString: "")
        print("deviceTokenString \(deviceTokenString)")
    }

    // Push通知利用不可
    func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
        print("devideToken register error: " + "\(error)")
    }

    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
        switch application.applicationState {
        case .Active:
            // アプリ起動中にPush通知を受信したとき
            break
        default:
            // アプリがバックグラウンドにいる状態で、Push通知から起動したとき
            break
        }
    }
}

参考

[iOS8以降]Push通知の実装とテスト(swift) - Qiita
http://qiita.com/k-yamada@github/items/258aec32a0d5b514f1cf

SwiftでPush通知 - Qiita
http://qiita.com/sawapi/items/feba100851de47fbe412

32
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
29