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

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

新規登録して質問してみよう
ただいま回答率
85.50%
ニフティクラウド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回答

548閲覧

Monaca+NiftyCloudMobileBackendでのデータストア内installationクラスの項目取得+端末の項目(バッジ)更新

meamea

総合スコア15

ニフティクラウド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クリップ

投稿2017/08/21 07:44

編集2017/08/24 02:28

###前提・実現したいこと
Monaca上でプッシュ通知のバッジをアプリ起動時に初期化したい
そのため起動時(resume,deviceready)にイベントリスナーを登録し、下記関数を起動しようとしたが、値の更新の前に取得ができない。

Monaca上でJSコンポーネントncmb2.1.1をインストール済み
その他Cordova6.2.0+ncmb-push-monaca-plugin2.0.6を有効化済み

###発生している問題・エラーメッセージ
NiftyCloudMobileBackend上のデータストア内にある
Installationクラスの値をオブジェクトIDをキーにして取得(更新)したいのですが、下記参考サイトを元に書いても結果が取得できません

https://github.com/NIFTYCloud-mbaas/MonacaSegmentPushApp
http://mb.cloud.nifty.com/doc/current/datastore/basic_usage_monaca.html#/Monaca/

###該当のソースコード

※2通りの記述を書いています

function clearNCMBbadge(){ var ncmb = new NCMB(MOBILE_BACKEND_APPLICATION_KEY, MOBILE_BACKEND_CLIENT_KEY); var Installation = ncmb.DataStore("installation"); //alert(Installation.toSource()); Installation.fetchById(localStorage.getItem("USER_OBJECT_ID")) .then(function(installation){ alert("取得できたよ。"); }) .catch(function(err){ /* installation取得失敗時の処理 */ alert("installation取得に失敗しました" + err); }); var Installation = ncmb.DataStore('installation'); var installation = new Installation(); Installation.equalTo('objectId',localStorage.getItem("USER_OBJECT_ID")) .fetchAll() .then(function(installation){ alert("更新するよ。"); installation.set("badge", 0); return installation.update(); }) .then(function(installation){ alert("更新できたよ"); }) .catch(function(err){ alert('見つからないよ。'+err); }); }

###エラーメッセージ

installation取得に失敗しましたcannot GET https://mb.api.cloud.nifty.com/2013-09-01/classes/installation/XWSTB%EF%BD%8DFx70EkKrlj

追記1

NCMBのデータストアにはデータの登録はされています。
(ダッシュボードの解釈違いでしたら申し訳ありません・・・)
fetchAllを実行した場合、下記エラーメッセージが発生しました

cannot GET https://mb.api.cloud.nifty.com/2013-09-01/classes/installation(403)

追記2

最終的にプッシュ通知のバッジ初期化まで解決できたため記述しておきます。
同時にタイトルも変更いたしました。

js

1document.addEventListener("resume", function(){ 2 setTimeout(function() { 3 clearNCMBbadge(); 4 }, 0); 5 }, false); 6document.addEventListener("deviceready", clearNCMBbadge(), false); 7 8function clearNCMBbadge(){ 9 var ncmb = new NCMB(MOBILE_BACKEND_APPLICATION_KEY, MOBILE_BACKEND_CLIENT_KEY); 10 var Installation = ncmb.Installation; 11 var installation = new Installation(); 12 installation.objectId = localStorage.getItem("USER_OBJECT_ID"); 13 installation.badge = 0; 14 15 return installation.update(function(){alert('更新完了');}); 16}

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

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

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

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

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

namimon

2017/08/21 08:48

ダッシュボードにはデータは表示されていますか? fetchByIdではなく、fetchAll()では取得できますか?
meamea

2017/08/21 09:01

追記しました。確認お願い致します
guest

回答2

0

自己解決

こちらパーミッションの問題ではありませんでした。
パーミッションはあくまで会員もしくはロールに対するものでしたので、
プッシュ通知を配信する場合だけでNCMBを使用している場合にはncmb-push-monaca-pluginを使うことで
会員機能は使用しなくても実装できます。
(参照リファレンス:http://mb.cloud.nifty.com/doc/current/push/basic_usage_monaca.html#/Monaca/)

今回JS/CSSコンポーネントのncmbを利用してデータストアへのアクセスを試みた場合に、
下記リファレンスを参考にしました。
http://mb.cloud.nifty.com/doc/current/datastore/basic_usage_monaca.html

この際にNCMB管理画面上の表記にあるようにinstallationクラスを指定していましたが、
エラーメッセージを見ると

cannot GET https://mb.api.cloud.nifty.com/2013-09-01/classes/installation

REST API形式でデータ取得を行っていることがわかったので、
下記リファレンスを確認するとREST API形式の場合はinstallationクラスへのAPIパスは
http://mb.cloud.nifty.com/doc/current/rest/push/installationGet.html

installations/objectId

とsが付いた形での指定になっていました。
ですので記述したソースコードを

var Installation = ncmb.DataStore('installation'); ↓ var Installation = ncmb.DataStore('installations');

に変更したところ取得が可能となりました。

投稿2017/08/23 06:52

meamea

総合スコア15

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

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

0

こちらに同じような質問が上がっています。
最新バージョン(2.15)を試してみてください。

投稿2017/08/21 09:11

namimon

総合スコア726

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

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

meamea

2017/08/21 09:25 編集

こちらJS/CSSコンポーネントのncmb2.1.5にアップデートしたところ、 未だにエラーメッセージが発生しました。 エラーメッセージに変わりはなく、 デバックで使用している機器は iPhone7 iOS10.3.3 となっています。
namimon

2017/08/21 09:23

エラーメッセージは同じものでしょうか。
meamea

2017/08/21 09:25

エラーメッセージは同じものとなっています。
namimon

2017/08/21 09:32

ダッシュボードでパーミッションのチェックは確認されていますでしょうか。
meamea

2017/08/22 00:28

確認したところパーミッションの設定が微塵もされていませんでした。 ncmb-push-monaca-pluginにてinstallationクラスへの端末追加が既に出来ているので権限設定に問題がないものと思い込んでました。 ありがとうございました。
namimon

2017/08/22 00:32

おめでとうございます。お疲れ様でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問