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

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

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

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

Monaca

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

Q&A

解決済

3回答

850閲覧

【Monaca 】【NCMB】setDeviceTokenをせずにdeviceTokenを取得したい。

yuki-saito

総合スコア928

ニフティクラウドmobile backend

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

Monaca

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

0グッド

0クリップ

投稿2017/10/18 01:02

###前提・実現したいこと
MonacaとNCMBでプッシュ通知を実装しています。

オーソドックスな端末登録の仕方だと
devicereadyでwindow.NCMB.monaca.setDeviceTokenをするのだと思うのですが
アプリから直接NCMBに登録するのではなく
アプリから自社サーバを経由してNCMBにしたいです。

自社サーバからNCMBにセットするには
配信端末登録APIでできると思っているのですが
アプリ側でdeviceTokenを取得して自社サーバに送る必要があり
その方法が分からずに困っています。

【現在】(アプリ⇒NCMB)

window.NCMB.monaca.setDeviceToken(APP_KEY, CLIENT_KEY, SENDER_ID, successCallback, errorCallback);

【理想】(アプリ⇒自社サーバ⇒NCMB)

// deviceTokenを取得 ★こちらの方法が分かりません。 // 自社サーバへpost
// 自社サーバからNCMBへ登録 // 以下のAPIを想定 // http://mb.cloud.nifty.com/doc/current/rest/push/installationRegistration.html

window.NCMB.monaca.getInstallationIdという方法はあるようですが
NCMBのキー情報をアプリ側で持ちたくないこともあり
setDeviceTokenをせずに行いたいと考えています。

window.NCMB.monacaやNCMBのinstallationで取れると大変嬉しいのですが
その他の方法でも教えていただけるだけで有難いです。

###試したこと
Githubにある各SDK内のコードも見ながら
試してみてはいますが、現時点では見つかっておりません。

###補足情報(言語/FW/ツール等のバージョンなど)
Monaca、NCMB monaca_push_plugin、NCMB ncmb_js

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

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

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

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

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

guest

回答3

0

ビルドは混雑等でたまーに同一コードでもエラー(failed)になることもありますが、
何か(プッシュ通知系の?)プラグインが競合していませんか?

私は現在もたしかに cordova-plugin-firebase@0.1.22 でプラグインをインポートしています。

まずは一度、新プロジェクト作成からシンプルに、
AndroidでFirebaseのプッシュ通知だけ構成されてはいかがでしょうか?
(とりあえずAndroidだけであれば、Appleの証明書関係は一切不要で、)

私の場合ですが
①「Onsen UI V2 JS Minimum」を選択
cordova-plugin-firebase@0.1.22 プラグインだけを追加でインポート
③「index.html」のscript部分を以下に。
トークン取得処理すら入れていません。

<script> ons.ready(function() { console.log("Onsen UI is ready!"); window.FirebasePlugin.grantPermission();//iOSで必要なのでAndroidテスト時はなくてもOKなはずです window.FirebasePlugin.onNotificationOpen(function(notification){ console.log(notification); }); }); </script>

④あとは、FirebaseにAndroidアプリを登録して、「google-services.json」を取得。
Monacaのルートディレクトリへアップ

⑤ビルドする

⑥Firebaseコンソールからプッシュ通知を「Androidアプリ」宛で送付
(デバイストークン指定じゃなくても送付できますので、試しに・・・)

まずはこれで流れをつかめるかと思います。

投稿2017/10/19 08:57

Clavat

総合スコア92

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

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

yuki-saito

2017/10/19 09:02

丁寧にありがとうございます。 確かに色々試し過ぎて競合はあり得ます・・・ シンプル版で試してみます!><
Clavat

2017/10/19 09:08

たぶんご理解されていると思いますが、アプリのID(逆ドメインで指定する)のところは、MonacaとFirebase登録のアプリIDとで合わせてくださいね。このあたりは参考サイトに色々と書いてありますので、その手順で大丈夫だと思います。
yuki-saito

2017/10/19 11:12

了解しました! 何から何までありがとうございます。
yuki-saito

2017/10/21 03:05

Clavat 様 色々教えていただき、本当にありがとうございました。 おかげさまでFirebaseでも実装することができました。 結果的には解決した方法にも書いた通り 全てをリセットしてMonacaのプッシュ通知で実装することにしたのですが Firebaseのコードもできたのでとても満足しています。 折角色々学んだので、次は是非Firebaseも使ってみたいと思っています。 P.S Firebaseのバージョンは指定せずともできるようになっておりましたので、お知らせしておきます。 (最新は0.1.24でしたかね。) 本当に色々とありがとうございました。
Clavat

2017/10/21 03:46

解決したようでよかったです。 Monacaバックエンドを使用されたのですね? 私の場合はMonacaバックエンドの通知数に上限があることと、 iOS・Androidを一括して1ソースで管理したいということもあり、 Firebaseを選んで、それに伴うプラグインを入れました。 最新バージョンはiOSでクラッシュするバグがあったので、0.1.22にしています。 Androidですと、0.1.24でも大丈夫でした。
yuki-saito

2017/10/21 04:44

あっなるほど、そういうことなんですね! それでは私もMonacaバックエンドではダメかもしれないですし iOS・Androidどちらも使うので、結局はFirebaseで0.1.22になるかもしれません! もう少し調べてみます! またまた色々教えていただいてしまってありがとうございます!
Clavat

2017/10/21 04:50

最後にウラワザ的な使い方ですが、Monacaのバックエンドでプッシュ通知に必要な証明書やp12ファイルなどを作成してApple Dev Centerと Firebaseに登録してしまえばMonacaのバックエンドを削除して(バックエンドを経由せずに)Firebase→(APNsを自動的に経由して)→各端末への流れも確立できますので、Monacaバックエンドの通知数上限も問題なくクリアできますw Windowsユーザの私としてはうれしい誤算で・・・。 MonacaをMacのキーチェーン代わりに使っている感じでしょうかね。 また色々情報交換できればと思いますので、よろしくお願いいたします。
yuki-saito

2017/10/21 05:10

そうなのですね! Appleのdevelopers登録が申請してから進んでいないこともあって証明書などはこれからなのです。 こちらこそ是非これからも情報交換させていただけたらと思います! よろしくお願い致します!!
guest

0

NCMBは使用していないのですが、
端末のデバイストークンを取得する方法であれば、
iOS・Androidともに対応できるFirebaseを使用されてはいかがでしょうか?

参考
https://utage.headwaters.co.jp/blog/?p=6406
https://utage.headwaters.co.jp/blog/?p=6478

Monacaで使用するプラグインは
https://github.com/arnesson/cordova-plugin-firebase
が良いと思います。
https://teratail.com/questions/88609 も参考に)

プラグインの window.FirebasePlugin.getToken メソッドで
デバイストークンが取得できるので、
それを御社サーバにPOSTしてあげれば良いかと。

投稿2017/10/18 02:28

Clavat

総合スコア92

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

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

yuki-saito

2017/10/18 02:36

Clavatさんが自己解決されていたこちらの質問も見ておりました。 https://teratail.com/questions/69832 やはりFirebaseならば可能なのですね。 テスト実装して試してみます。 ありがとうございます。
yuki-saito

2017/10/19 08:35 編集

Clavat 様 試しているのですが、デバッグビルドするとFirebaseでエラーが発生してしまいます。 教えていただいたサイトも確認して0.1.22で確認しております。 ************************************* "external_plugins": [ "cordova-plugin-firebase@0.1.22", ], ************************************* ************************************* - postBuild - Remove working directories... Build Error: Error: Sandbox Exec Error: [ 注意:一部の入力ファイルは非推奨のAPIを使用またはオーバーライドしています。 注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。 注意:一部の入力ファイルは非推奨のAPIを使用またはオーバーライドしています。 注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。 /private/tmp/monaca/59e86352e78885af358b456b/project/platforms/android/src/org/apache/cordova/firebase/FirebasePlugin.java:278: エラー: シンボルを見つけられません boolean areNotificationsEnabled = notificationManagerCompat.areNotificationsEnabled(); ^ シンボル: メソッド areNotificationsEnabled() 場所: タイプNotificationManagerCompatの変数 notificationManagerCompat 注意:一部の入力ファイルは非推奨のAPIを使用またはオーバーライドしています。 注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。 エラー1個 FAILURE: Build failed with an exception. ************************************* バージョンは0.1.22でやられていますか?
Clavat

2017/10/19 08:58

コード追加したので、↓に別途回答します。
yuki-saito

2017/10/19 09:01

ありがとうございます!><
guest

0

自己解決

結局NCMBではできず、Firebaseで取れたdeviceTokenはNCMBのものとは違った(当然ではありますが・・・)ため
プッシュ通知全てをFirebaseで行う必要が出て来てAPIから何から見ていたのですが
結果的にMonacaのプッシュ通知でいいじゃんと思ったため、全てをリセットしてMonacaだけで実装する方針としました。
(MonacaであればdeviceIDが取れるので、それをサーバに送ってそこからMonacaのプッシュ通知APIを叩くことにしています。)

投稿2017/10/21 03:01

yuki-saito

総合スコア928

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問