2015年

5月

19日

Apple Watch Push通知 端末認識(DeviceTokin)Xcodeプロビジョニングファイル実装設定

ニフティクラウドmobile backend(mBaaS)のPush通知を利用して「Apple Watch」に通知しようと試みたがDeviceTokenが認識(端末)しなかったので調べた結果をまとめました。
上記の例ように送信端末数が表示出来れば良好である。


【結論】

XcodeでBundle identifier、プロビジョニングファイル証明書を設定してなかったのが原因。
(ニフティクラウドmobile backend(mBaaS)のPush通知の設定解説にこの点を記述していなかったので苦労した。)

【対処】

Xcodeの info > Bundle identifier 設定、
Xcodeの Build Settings > Code Signing > Provisioning Profile 設定。

設定後DeviceTokenの端末認識が出来てPush通知が成功。

起動時にログメッセージ"DeviceTokenƒ"が出ればデバイストークンが取得されたことになる。
ログメッセージが出ない場合には、設定等の見直しをした方が良いと判断する。

// 配信端末情報を登録する。 DeviceTokenƒ

// ユーザーへの確認後デバイストークンを受け取る

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    

    // UIApplicationDelegateに宣言されているメソッドで、Push通知のデバイストークン要求後、

    // 無事に取得ができた時に呼び出されます。

    

    NSLog(@"DeviceTokenƒ");

    NCMBInstallation *currentInstallation = [NCMBInstallation currentInstallation];

    [currentInstallation setDeviceTokenFromData:deviceToken];

    [currentInstallation save:nil];

    

}

エラー表示

// 通知に関するエラー時はこちら
- (void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {

    NSLog(@"error: %@", error);


    if ([error code] == 3010) {
        // 通知は、シミュレータでは動作しないプッシュ!
        NSLog(@"Push notifications don't work in the simulator!");

    } else {
        NSLog(@"didFailToRegisterForRemoteNotificationsWithError: %@", error);
    }
}

エラー内容

プッシュ通知のテストの際、Xcodeでビルド・実行した際に、ログに以下のエラーが出力。
※ 端末に「プッシュ通知を送信します。よろしいですか?」のポップアップもなし

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

didFailToRegisterForRemoteNotificationsWithError: Error Domain=NSCocoaErrorDomain Code=3000 "Appの有効な“aps-environment”エンタイトルメント文字列が見つかりません" UserInfo=0x14664340 {NSLocalizedDescription=Appの有効な“aps-environment”エンタイトルメント文字列が見つかりません}

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

  

目 次