NIFCLOUD-mbaas / UserCommunity

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

javascript setDeviceToken の実行直後の端末情報更新について #190

Open Noz-O opened 9 years ago

Noz-O commented 9 years ago

お世話になっております。 monacaを使って開発をしています。Android、iOS両対応を考えています。 現在、Push通知実装に関して躓いている点があるので、ご教授いただければと思います。

やりたいことは、setDeviceToken を使ってに端末情報を登録する際に、「nifty mobile cloud」に新規で追加したフィールドにデータを入れたいということです。 具体的には、新規登録した「server」というフィールドに、setDeviceToken を実行したときに「Atomos」というデータを入力したいです。

または、setDeviceTokenの実行直後にgetInstallationIdでobjectIdが取得できれば、サーバーからPUTを実行できる状態です。しかしgetInstallationIdでnullが返ってきます。

現状で実装しているコードを添付します。よろしくお願いいたします。

monabaのコード:

document.addEventListener("deviceready", function(){
    window.NCMB.monaca.setHandler
    (
       function(jsonData){
           alert("callback :::" + JSON.stringify(jsonData));
       }
    );
  window.NCMB.monaca.setDeviceToken(
     "XXX",
     "XXX,
     "XXX 
  );
  window.NCMB.monaca.setReceiptStatus(true);
},false); 
function getInstallationId() {
   var installation_id = null;
     window.NCMB.monaca.getInstallationId(
         function(id) {
             installation_id  =  id;
          }
     );
 return installation_id;
}
goofmint commented 9 years ago

@Noz-O 現状、setDeviceTokenのsuccessコールバックがないので、即座にgetInstallationIdを実行しても結果が返ってこないかと思います。setIntervalでgetInstallationIdを何回か実行する必要があります。で、結果が取得できたらlocalStorageなどにその記録を残してclearIntervalするのが良いかなと。

Noz-O commented 9 years ago

返信ありがとうございます。 setIntervalを使って実装できました。 ご助言ありがとうございました!