Amazon Web Service (AWS)のSNSを使ってiOSにプッシュを送ってみた 【Xcode編 その3】
前回はProvisioning Profilesの作成をしました。 今回はXcodeでサンプルアプリを作成して、DeviceTokenを取得してみましょう。
サンプルアプリの作成
Xcodeを起動して、File>New>Projectを選択します。
Single View Applicationを選択して、Nextをクリックします。
Organizations Nameは識別しやすいもので大丈夫です。 Product NameとOrganizations Identifier を入力するのですが、その組み合わせがその1で作成したBundle Identifierと一致するようにしてください。 ここは凄く重要です。
PROVISIONING PROFILEの割当て
以前作成したProvisioning Profileをサンプルアプリに割り当てていきます。 TARGETS>pushtest>Generalに移動したら、Teamのところから自分の開発用アカウントを選択します。
pushtest>PROJECTのpushtestへ移動します。
Build Settingsを選択して、Allが選択されていることを確認したら、検索バーにcode signと入力します。
Provisioning ProfileのDebugには作成したプッシュ通知用のProvisioning Profileを指定します。Code Signing IdentifyにはProvisioning Profileに登録されたアカウントを指定します。この選択時にIdentifiers from Profile “hogehoge”というアナウンスが表示される場合は、それでサジェストされたアカウントを指定してください。上手く表示されない場合は、一度Xcode全体を終了して、再起動してみてください。これによって、Profileなどの認証がうまくいきます。新しいProvisioning Profileを追加した場合は再起動することをおすすめします。
設定が完了すると次のようになります。
TARGETS>pushtestのCode Signingについても同様の設定を行います。
DEVICE TOKEN取得用コードの追加
TARGETS>pushtest>CapabilitiesからPush Notificationを有効化します。
AppDelegate内に以下のコードを追加します。
// REGISTER DEVICE TOKEN func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { // GET TOKEN print("Device token = \(deviceToken)") }
実機でアプリを起動すると、アプリがAppleのプッシュ管理用のサーバーにアクセスします。 端末固有のID情報の登録が完了すると、このファンクションを通じてdeviceTokenが表示されます。
// FAILED TO REGISTER DEVICE TOKEN func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { print("couldn't register: \(error)") }
また上のコードを追加することで、deviceTokenの取得に失敗した場合のエラー内容をみることができます。
// // REGISTER DEVICE TOKEN // let userNotificationTypes:UIUserNotificationType = [UIUserNotificationType.Alert,UIUserNotificationType.Sound] let settings = UIUserNotificationSettings(forTypes: userNotificationTypes, categories: nil) application.registerUserNotificationSettings(settings) application.registerForRemoteNotifications()
最後にAppDelegateのdidFinishLaunchingWithOptions内に上のコードを追加してくだい。 このコードでは通知設定を促すウィンドウとDeviceTokenの取得を試みます。
DeviceTokenが取得できるとXcodeのConsole画面に次のように表示されます。 次回はAWSのSNSを使って実際にプッシュ通知をしてみましょう!