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

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

新規登録して質問してみよう
ただいま回答率
85.35%
ニフティクラウドmobile backend

ニフティクラウドmobile backend (mBaaS)はニフティが提供するBaasサービスです。プッシュ通知、データストア、ファイルストア、会員管理・認証機能などのバックエンド機能をクラウドから提供しています。 Andoird/iOS/JavaScript/Unityと各種SDKに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

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

Q&A

解決済

2回答

1145閲覧

MonacaでNIFCloudMBを使用してのプッシュ通知

LOVELYESUS

総合スコア8

ニフティクラウドmobile backend

ニフティクラウドmobile backend (mBaaS)はニフティが提供するBaasサービスです。プッシュ通知、データストア、ファイルストア、会員管理・認証機能などのバックエンド機能をクラウドから提供しています。 Andoird/iOS/JavaScript/Unityと各種SDKに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

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

0グッド

2クリップ

投稿2020/04/08 06:39

前提・実現したいこと

MonacaでNIFCloudMBを使用してのプッシュ通知を実装したいと思います。

発生している問題・エラーメッセージ

window.NCMBオブジェクトが生成されません。

該当のソースコード

javascript
ソースコード
document.addEventListener("deviceready", function(){
pushIni();
},false);
function pushIni(){
if(window.NCMB){
// プッシュ通知受信時のコールバックを登録します
window.NCMB.monaca.setHandler
(
function(jsonData){
// 送信時に指定したJSONが引数として渡されます
alert("callback :::" + JSON.stringify(jsonData));
}
);

var successCallback = function () { //端末登録後の処理 }; var errorCallback = function (err) { //端末登録でエラーが発生した場合の処理 }; // デバイストークンを取得してinstallation登録が行われます // ※ YOUR_APPLICATION_KEY,YOUR_CLIENT_KEYはニフクラ mobile backendから発行されたAPIキーに書き換えてください window.NCMB.monaca.setDeviceToken( "YOUR_APPLICATION_KEY", "YOUR_CLIENT_KEY", successCallback, errorCallback ); // 開封通知登録の設定 // trueを設定すると、開封通知を行う window.NCMB.monaca.setReceiptStatus(true); alert("DeviceToken is registed"); }else{ setTimeout(pushIni,1000); console.log("try"); }

}

試したこと

ソース自体はWEBで探したサンプルコードほとんどそのままです。

1.まず最初にMonacaBackendでプッシュ通知を実装しました。あっさり動いたのですが着信時に音が出ないことや、プラナップしないとAPIが使えないなどの理由からニフサブに実装を変更することにしました。MonacaBackendeで動作確認が取れたことから、apple developerでの登録は問題ないと推測しています。

2.まずはWEBで見つけたサンプルを元にざっと実装して見ました。ですがカスタムビルドデバッガーで見るとエラーを吐いていました。
TypeError:undefined is not an object(evaluating 'window.NCMB.monaca)

3.あちこち記事を探して見ましたが、古い記事にオブジェクトはすぐに生成されるとは限らないので、時間をおいてなんども試せとあったので上記のソースに書き換えました。window.NCMBオブジェクトがなければ1秒待って再実行するようにです。その際、consoleにtryと書き出すようにしました。

4.結果はtryがずーっと並び、一向にwindow.NCMBが生成されないようです。

5.記事が古かったのでもしやと思い、NIFCloudMBを最新の3.xxから2.xxに変更して見ましたが、状況は変わりません。

補足情報(FW/ツールのバージョンなど)

monaca:PROプラン
mobile backend:無料プラン
iPhone SE
ios:13.3.1
実際にはYOUR_APPLICATION_KEY,YOUR_CLIENT_KEYはそれぞれ自分のものを記述しています。

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

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

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

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

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

guest

回答2

0

自己解決

極めてお恥ずかしいですが自己解決しました。
症状が改善されないためUSBデバッガを使おうと思い使い方を調べたところ、

下記のようなプッシュ通知用 Cordova プラグインは、ストア版およびカスタムビルドデバッガーでは利用することはできません。
利用する際は、デバッグビルドかリリースビルドにてご利用ください。
MonacaBackend プラグイン
NIFCloudMB プラグイン

というドキュメントを見つけました。
カスタムビルドデバッガーでは動作しない?
早速、デバッグビルドで試したところあっさり動作しました。

回答をいただいたmoongift様、本当にありがとうございました。

投稿2020/04/08 16:33

LOVELYESUS

総合スコア8

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

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

0

NCMBのプラグインはインストール済みでしょうか?MonacaのIDEで、Cordovaプラグインの一覧から選ぶものです。そこで選んだもらった上で、デバッグビルドなどしてもらう必要があります。

投稿2020/04/08 07:20

moongift

総合スコア250

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

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

LOVELYESUS

2020/04/08 08:20

NCMBとういうプラグインを入れるべきなのでしょうか?プラグインのリストに見当たらないようです。 NIFCloudMBであれば3.xxと2.xxの両方を試しましたが、これとは別物ですか?
moongift

2020/04/08 08:33

NIFCloudMB で合っています。失礼しました。最新版の3.0.6を使ってください。 このプラグインが正しく入っていれば `document.addEventListener("deviceready")` の中では `window.NCMB` があるはずなのですが。もしかするとJavaScriptのNCMB SDKもインストールされているかも知れません。インストールされているとしたら、こちらのバージョンは何でしょうか?両方最新版であれば問題ないはずです。
LOVELYESUS

2020/04/08 11:54

おつきあいありがとうございます。感謝します。 まずSDKですが(JS/CSSコンポーネントからインストールするやつですよね?)一度入れました。ただうまく動作しなかったので削除しました。IDEの削除で削除したので必ずしもインストール前と同じかどうかは確認できませんが、少なくともJS/CSSコンポーネント一覧からは消えている状態です。 NIFCloudMBはIDEのCordovaプラグインを見る限り最新版は3.0.7となってますが、仰せの通り3.0.6でカスタムデバッガービルドをしてみましたが、状況は改善されないようです。
LOVELYESUS

2020/04/08 13:47

「両方最新版であれば問題ないはずです。」との発言を受けまして、今度はプラグインとSDKの両方をインストールして見ました。プラグインは3.0.7、SDKは3.0.2を使いました。 「components/ncmb/ncmb.min.js」を読み込むか?のチェックボックスが出ましたが、これは解釈が2通りあり「ビルドで自動で読み込む」という意味なのか「htmlで読み込む」の宣言なのか悩みまして、どちらも試しました。チェック入れました。 そのままビルドしますと、現象は同じくwindow.NCMBは作られてないようです。 続いてindex.htmlに <script src="components/ncmb/ncmb.min.js"></script> を記述してビルドしたら TypeError:undefined is not an object(evaluating 'window.NCMB.monaca) が出るようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問