モケラ

Tech Sheets

mokelab

デバイストークンを取得する

最終更新日:2015-11-30

Provisioning Profileの準備ができたら、次はアプリでデバイストークンを取得しましょう。

トークンの取得リクエストを投げるには、次のコードを実行します。(Swift 2.0)

@IBAction func buttonClicked(sender: AnyObject) {
    let settings = UIUserNotificationSettings(forTypes: [.Badge, .Alert, .Sound], categories: nil)
    UIApplication.sharedApplication().registerUserNotificationSettings(settings)
    UIApplication.sharedApplication().registerForRemoteNotifications()
}

UIUserNotificationSettingsforTypesで、通知方法を指定します。ここでは「テキスト・サウンド・アイコンバッヂ」を指定しています。

これを実行すると、初回は次のようなダイアログが表示されます。ここで"OK"を選ぶと、デバイストークン取得のリクエストがAPNsに送られ、APNsサーバーからトークンが返されます。

APNsへのデバイス登録が完了すると、AppDelegateapplication:didRegisterForRemoteNotificationsWithDeviceTokenが呼ばれます。

class AppDelegate: UIResponder, UIApplicationDelegate {
    // 中略
    func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
        let characterSet: NSCharacterSet = NSCharacterSet(charactersInString: "<>")

        let deviceTokenString: String = (deviceToken.description as NSString)
            .stringByTrimmingCharactersInSet(characterSet)
            .stringByReplacingOccurrencesOfString( " ", withString: "" ) as String
        NSLog("\(deviceTokenString)")
    }
}

引数で渡されるdeviceTokenは、"<AAAA BBBB CCCC>"のように、<>で囲まれていて、半角スペースを含みます。サーバーからPushを送るときは、これらを除去したデバイストークンを用いるので、取得直後に除去しています。

このデバイストークンを自前のサーバーに送ることで、Push送信準備が完了しました。

一覧に戻る