NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
81 stars 18 forks source link

【過去質問】ニフクラAndroid SDKでinstallationクラスのカスタムフィールド登録について #1246

Open ncmbsupport opened 3 years ago

ncmbsupport commented 3 years ago

NCMB Android SDK Version 4.0.1を利用していて、installationクラスに新たにfavoriteフィールドを作り、文字列をセットしようとしています。以下のように書いたのですがエラーが出てうまくいきません。 解決方法があればご教示いただけましたら幸いです。

       final NCMBInstallation installation = NCMBInstallation.getCurrentInstallation();
       try {
           installation.put("favorite", favoriteString");
       } catch (NCMBException e) {
           e.printStackTrace();
       }
       installation.saveInBackground(new DoneCallback() {
           @Override
           public void done(NCMBException e) {
               if (e != null) {
                   Log.d("Debug","NCMB Error/"+e.toString());
               }else{
                   Log.d("Debug","NCMB Sussess");
               }
           }
       });
ncmbsupport commented 3 years ago

ご質問いただき、ありがとうございます。 以下の検証コードでお客様と同様エラー再現することができました。(動作検証環境:Android SDK 4.0.1, Android 7.1.1)


       NCMB.initialize(this.getApplicationContext(), "APPKEY", "CLIENTKEY");
       final NCMBInstallation installation = NCMBInstallation.getCurrentInstallation();
       if (installation != null) {
           Log.d("Debug","NCMB Installation" + installation.getObjectId());
       }
       try {
           installation.put("favorite", favoriteString");
       } catch (NCMBException e) {
           e.printStackTrace();
       }
       installation.saveInBackground(new DoneCallback() {
           @Override
           public void done(NCMBException e) {
               if (e != null) {
                   Log.d("Debug","NCMB Error/"+e.toString());
               }else{
                   Log.d("Debug","NCMB Sussess");
               }
           }
       });

エラーの原因

initialize処理直後にinstallationを更新したことが原因で発生するエラーです。installation登録処理が完了せず、カスタムフィールド (favorite)を追加し、installationを更新する処理を実行すると上記のエラーが発生します。 (initialize処理時にinstallationの登録を行っており、登録するためにはdeviceTokenが必要となりますが、deviceTokenを取得する処理には時間がかかることがあります。)

エラーの解消

initialize時にカスタムフィールドを追加する場合は以下のドキュメントに記載している方法をご参考にしてください。 尚、initialize時以外であればご連絡いただいた実装で更新できることを確認いたしました。

プッシュ通知|アプリでの設定ドキュメント

以上、引き続きニフクラ mobile backendを宜しくお願い致します。