デバイストークンを取得する
最終更新日: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()
}
UIUserNotificationSettings
のforTypes
で、通知方法を指定します。ここでは「テキスト・サウンド・アイコンバッヂ」を指定しています。
これを実行すると、初回は次のようなダイアログが表示されます。ここで"OK"を選ぶと、デバイストークン取得のリクエストがAPNsに送られ、APNsサーバーからトークンが返されます。
APNsへのデバイス登録が完了すると、AppDelegate
のapplication: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送信準備が完了しました。