モケラ

Tech Sheets

mokelab

Push受信時の処理を実装する

最終更新日:2015-11-30

ここでは、APNsからPush通知を受け取った時の処理をどのように実装するか紹介します。

アプリが起動していない時

アプリが起動していない時は、自動でNotificationが表示されます。ユーザーがそれをタップしてアプリを起動した場合、application:didFinishLaunchingWithOptionsoptionsに、UIApplicationLaunchOptionsRemoteNotificationKeyというキーでPushの内容が渡されます。

class AppDelegate: UIResponder, UIApplicationDelegate {
    // 中略
    var pushDic : [NSObject: AnyObject]!

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        // 型は[NSObject: AnyObject];
        let dic = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [NSObject: AnyObject];
        if dic != nil {
            self.pushDic = dic!
        }
        return true
    }
}

アプリが起動している場合(バックグラウンドにいる時を含む)

アプリが起動している場合は、Notificationは表示されず、そのままapplication:didReceiveRemoteNotificationが呼ばれます。引数の内容は上記コードのdicと同じものです。

class AppDelegate: UIResponder, UIApplicationDelegate {
    // 中略
    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
        NSLog("\(userInfo)")
    }
}

NSNotificationCenterを使って内容を他のオブジェクトに通知するとよいでしょう。

一覧に戻る