Open OnlineKanazawa opened 6 years ago
Monacaの場合、同機能はあらかじめ組み込まれています。ただ、再登録のため、データは同じobjectIdではなくなっているようです。 `getInstallationIdで探してみてください。
function getInstallationId() {
// 登録されたinstallationのobjectIdを取得します。
window.NCMB.monaca.getInstallationId(function(id) {
alert("installationID is: " + id);
}
)};
http://mb.cloud.nifty.com/doc/current/push/basic_usage_monaca.html#Monaca%20側の設定
回答ありがとうございます。 goofmintさんのおっしゃる通り、getInstallationIdで取得は試みておりますが、新しいobjectIdが得られません。
setDeviceTokenでコールバックが使えることに気付きましたので、コードを下記に修正して検証してみました。
window.NCMB.monaca.setDeviceToken(
"apikey",
"clientkey",
"sendkey",
function() {
// 成功時のコールバック
window.NCMB.monaca.getInstallationId(function(id) {
alert("installationID is: " + id);
}
},
function(err) {
// 失敗時のコールバック
alert(JSON.stringify(err));
}
);
検証手順
検証結果
Androidでは再登録時にエラーが出ましたが、もう一度再起動させると再登録できました。 エラーが出たときの詳細は下記の通りです。
{
"code":"E404001",
"message":"Failed to save registration ID."
}
しかし、iOSでは何度再起動させてもエラーとなってしまいます。 エラーの中身は下記の通りです。
{
"E404001":"code",
"installation save error.":"message"
}
エラー後にgetInstallationIdでobjectIdを取得してみると、Androidではnull、iOSでは消したはずのobjectIdが返されます。
また、NCMBプラグインのバージョンを2.0.6にアップデートして同様の検証をしてみました。 Androidでは2.0.4のときと同じ結果となりました。 iOSでは問題なくobjectIdが再登録されました。
ひとまず、プラグインのバージョンアップでアプリの問題は解決しそうです。 ありがとうございました。
Monacaを用いてアプリを作成し、NCMBをPUSH通知の送受信に使用しております。
ユーザー数が多くなってきた中で、リリース初期から登録しているユーザーの中にPUSH通知を受信できなくなったユーザーが現れております。 対象のユーザーのobjectIdをデータストアのinstallationから絞込み機能で検索してもデータが見つかりません。 調べた中で下記URLのドキュメントにある「アプリがアンインストールされた端末情報(installation)の自動削除」によってデータが削除されたものかと推測しております。
http://mb.cloud.nifty.com/doc/current/common/dev_guide.html#%E3%83%97%E3%83%83%E3%82%B7%E3%83%A5%E9%80%9A%E7%9F%A5%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
iOSやAndroidのドキュメントには「PUSH通知の基本的な使い方」の中に「installationが削除された時を考慮する場合」という項目があり対策方法が書かれていますが、Monacaのドキュメントにはそれがなく、代わりになるコードも見つかりません。
どなたか再登録の仕方がわかる方がいらっしゃいましたら、教えていただけますと幸いです。 Cordovaバージョンは6.2.0、ncmbのプラグインバージョンは2.0.4で、Installationの登録は下記のコードでdevicereadyの後に毎回実行しております。
window.NCMB.monaca.setDeviceToken( "apikey", "clientkey", "sendkey" );
宜しくお願いします。