質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

1回答

547閲覧

mobile backendのinstallationが登録されない

退会済みユーザー

退会済みユーザー

総合スコア0

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2017/08/23 06:56

monacaを使ってiOS,Android向けのアプリを開発しています。
プッシュ通知を実装しようと思いmobile backendを利用しているのですが、なかなかうまくいきません。

AndroidのためのAPIキーの設定やiOSのための証明書などドキュメントにかかれてあることは一通り試し、ビルドしてみたのですが、やはりプッシュ通知がうまくいきません。

そこでいろいろ調べてみると、
アプリ起動→「通知を送信します」のアラート→OKをタップ→mobile backendのデータストアのInstallationにデータが追加される

とあるのですが、見てみるとinstallationには何も表示されていません。

何度試してみても表示されないのですが、どこに問題があるのでしょうか。

var ncmb = new NCMB("アプリケーションキー","クライアントキー");
などや
プッシュ通知ドキュメントにある以下のコードも適当に修正し実装されています。(getInstallationId関数をどのタイミングで実行すればよいのかはわかっていません)

javascript

1 document.addEventListener("deviceready", function() 2 { 3 // プッシュ通知受信時のコールバックを登録します 4 window.NCMB.monaca.setHandler 5 ( 6 function(jsonData){ 7 // 送信時に指定したJSONが引数として渡されます 8 alert("callback :::" + JSON.stringify(jsonData)); 9 } 10 ); 11 12 13 // デバイストークンを取得してinstallation登録が行われます 14 // ※ aplication_key,client_keyはニフティクラウドmobile backendから発行されたkeyに置き換えてください 15 // ※ sender_idは【GCMとの連携に必要な準備】で作成したProjectのProject Numberを入力してください 16 window.NCMB.monaca.setDeviceToken( 17 " #####application_key#####", 18 " #####client_key#####", 19 " #####sender_id#####" 20 ); 21 22 // 開封通知登録の設定 23 // trueを設定すると、開封通知を行う 24 window.NCMB.monaca.setReceiptStatus(true); 25 26 alert("DeviceToken is registed"); 27 },false); 28 29 function getInstallationId() { 30 // 登録されたinstallationのobjectIdを取得します。 31 window.NCMB.monaca.getInstallationId( 32 function(id) { 33 alert("installationID is: " + id); 34 } 35 ); 36 }

またアプリ上とmobile backendの連携がとれていることの証拠として、アプリ内のデータベースとしてmobile backendのデータストアを使用しているのですが、しっかり読み込むことができています。

あとはinstallationクラスさえ上手く行けばプッシュ通知の実装ができると思っているのですが、この原因を突き止めるにもとても時間がかかってしまって、また躓いてしまいました。

どなたかなにかわかる方がいらっしゃればご教示願えませんでしょうか
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

開封通知の前にgetInstallationId関数を実行します。
私の場合ObjectIdが1回で取得できない場合がありましたので(インストール後初回起動時)
下記の様な形で実装しています。

var ncmbTimer = setInterval(function() { // ObjectId取得試行 window.NCMB.monaca.getInstallationId(function(id) { if(id) { alert(id); // 取得できたら解除 clearInterval(ncmbTimer); } }); }, 1000);

実現したいこととは違いますが、ご参考ください。

投稿2017/08/23 07:00

編集2017/08/23 07:04
meamea

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/24 04:50

ご回答ありがとうございます。 実際に実装してみてmonaca localkit上でのプレビューと、スマホアプリ上のデバッグ機能で試してみましたが、mobile backend上にinstallationは登録されませんでした。 localkitの方ではコンソールに 「'cannot read property 'getInstallationId' of undefined」というエラーが毎秒表示されています。 まだビルドしてアップデートはしていなのですが、これってlocalkitやアプリのプレビューでもmobile backendにinstallationは作成されるのでしょうか。 よければ教えて頂けるとうれしいです。
meamea

2017/08/24 04:58

お考えの通り、ビルド後でないとプラグイン(ncmb-push-monaca-plugin)は動作しません。 なので検証する場合は逐一ビルドをしてください。 また、上記の回答についでですが、installationに端末登録するものではなく、 端末登録が完了した場合にObjectIdを取得してくる関数ですので、 installationが登録される部分はwindow.NCMB.monaca.setDeviceToken実行後になります。 Monaca上でプラグインの有効化はされていますか?
退会済みユーザー

退会済みユーザー

2017/09/04 15:34

返信遅くなりました。すみません。 monaca上のプラグインは有効化されています。mobile backendのデータベースは利用できています。 コードを実装してみてビルド、アップデートしてみたところinstallationに1つだけ表示されました。(恐らく自分のではない) もう少し調べてみると、mobaile backendのプッシュ通知のドキュメントのandroidとiosのページには、「installationが削除された場合」や「アプリが再インストールされた場合」などがあるのですが、monacaのページには見当たりません。恐らくこの辺が必要なのだと思うのですが、何かわかることがありませんでしょうか。 先程android(JAVA?)とios(swift?)のその実装のコードを見てjavascriptに書き直せるかなと思ったのですが、両方共しらないのでそれは諦め、新しくmobile backend上にアプリを作成し、キーなどを登録し直してビルドしてappleの承認を待っているところです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問