プッシュ通知(Application Development Framework)
基本的な使い方
Contents |
概要
このページでは、プッシュ通知を受信するための設定と、
プッシュ通知の配信方法について説明していきます。
プッシュ通知の受信
iOS端末とAndroid端末は、各OS向けのプッシュ通知機能を利用することで、通知の受信ができます。
プッシュ通知を受信する場合、APNsやFirebaseとの連携を行う必要があります。
※ Android端末にプッシュ通知を送信する場合、受信端末が省電力モードに設定されているとプッシュ通知が端末に届かない場合があります。
mBaaS管理画面側の設定
下記ドキュメントを参考に、mBaaS管理画面からプッシュ通知の設定を行ってください。
- iOS端末向けにビルドする場合:APNsとの連携設定
- Android端末向けにビルドする場合:Firebaseとの連携設定
※ Android端末へのプッシュ通知は、Firebaseと連携しています。Firebaseとの連携完了後、FCMかGoogle Cloud Messaging(以下、GCM)に送信することで、各端末にプッシュ通知が受信される仕組みです。
※ FCMはGCMの新バージョンです。GCMは2019年3月中に使用不可となります。GCM対応のプッシュ通知を使用しているお客様は移行対応の手順を参考に、FCM対応したプッシュ通知への移行をお願いいたします。
アプリ側の設定
プッシュ通知を受信する場合は、専用のCordovaプラグインを組み込み、端末情報をデータストアに登録する必要があります。
プッシュ通知受信用プラグインの組み込み方
1.ダウンロードサイトからプッシュ通知受信用プラグインを取得してください。
2.以下のコマンドでプッシュ通知受信用プラグインを登録してください。
> npm publish ncmb-push-adf-plugin-x.x.x.tgz
3.cordova plugin addコマンドを使用して、Cordovaプロジェクトにプラグインを追加します。
> cordova plugin add ncmb-push-adf-plugin
プラグイン追加後、Cordovaプロジェクト内にAPIリファレンスファイルが格納されます。
## リファレンスファイルの格納先
<Cordovaプロジェクトディレクトリ>/plugins/ncmb-push-adf-plugin/README.md
4.以下を参考にinstallation登録とプッシュ通知受信時のコールバックの登録を行ってください。
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script src="cordova.js"></script>
<script>
document.addEventListener("deviceready", function()
{
// プッシュ通知受信時のコールバックを登録します
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はmBaaS管理画面から発行されたAPIキーに書き換えてください
NCMB.monaca.setDeviceToken(
"YOUR_APPLICATION_KEY",
"YOUR_CLIENT_KEY",
successCallback,
errorCallback
);
// 開封通知登録の設定
// trueを設定すると、開封通知を行う
NCMB.monaca.setReceiptStatus(true);
alert("DeviceToken is registed");
},false);
function getInstallationId() {
// 登録されたinstallationのobjectIdを取得します。
NCMB.monaca.getInstallationId(
function(id) {
alert("installationID is: " + id);
}
);
}
</script>
</head>
<body>
<h1>PushNotification Sample</h1>
<br/><br/>
<input type="button" onClick="getInstallationId()" value="getInstallationID" />
</body>
</html>
注意事項
- Application Development FrameworkにおいてmBaaS PushをAndroidで使用する場合は、依存ライブラリをダウンロードして開発環境にコピーする必要があります。詳細は、「Application Development Framework アプリケーション開発ガイド」の「プラグインの準備(mBaaS PushをAndroidで使用する場合)」を参照してください。
- Monacaで本プラグインを使ったプッシュ通知受信機能はデバイス固有機能に依存しているため、Monacaが提供しておりますプレビューやMonacaデバッガーでは動作しません。動作確認の際は、iOS/Androidアプリとしてビルドし、デバイスへインストールしてご利用ください。
- v2系のプラグインを使用する場合は、YOUR_SENDER_IDをSender ID(送信者ID)に書き換えてください。
window.NCMB.monaca.setDeviceToken(
"YOUR_APPLICATION_KEY",
"YOUR_CLIENT_KEY",
"YOUR_SENDER_ID",
successCallback,
errorCallback
);
※プッシュ通知受信用プラグインの名前は、以下のように変更となりました。
v2系 :ncmb-push-monaca-plugin
v3以降:ncmb-push-adf-plugin
- プッシュ通知でJSONデータを受信し活用する場合、JSONデータのパラメータには以下の文字を使用できません。
- ダブルクォーテーション「"」
- ドット「.」
- 先頭にドル記号「$」
プッシュ通知の送信
パラメータを設定して、sendメソッドでプッシュ通知を送信できます。
即時配信フラグもしくは配信時間を必ず指定する必要があります。
設定可能なパラメータの詳細については、[REST APIリファレンス:プッシュ通知登録]をご覧ください。
var ncmb = new NCMB("YOUR_APPLICATIONKEY","YOUR_CLIENTKEY");
var push = new ncmb.Push();
push.set("immediateDeliveryFlag", true)
.set("message", "Hello, World!")
.set("target", ["ios", "android"]);
push.send()
.then(function(push){
// 送信後処理
})
.catch(function(err){
// エラー処理
});
※動作確認にはSDKの導入が必要です。(参考:クイックスタート)
プッシュ通知の検索
条件を設定することでプッシュ通知を検索します。
var ncmb = new NCMB("YOUR_APPLICATIONKEY","YOUR_CLIENTKEY");
ncmb.Push.equalTo("target","ios")
.fetchAll()
.then(function(pushs){
for (var i = 0; i < pushs.length; i++) {
console.log(pushs[i].message);
}
})
.catch(function(err){
// エラー処理
});
※動作確認にはSDKの導入が必要です。(参考:クイックスタート)
プッシュ通知の更新・削除
配信ステータスが「未配信」であるプッシュ通知については、設定の変更や削除が可能です。
// push:保存済みのプッシュインスタンス
push.set("target", ["ios"]);
push.update() // 更新
.then(function(push){
return push.delete(); // 削除
})
.then(function(){
// 削除後処理
})
.catch(function(){
});
※動作確認にはSDKの導入が必要です。(参考:クイックスタート)
mBaaS管理画面からプッシュ通知を配信する
ここからは、mBaaS管理画面からプッシュ通知を作成、配信する方法を説明します。
プッシュ通知を送信する
mBaaS管理画面左側メニューのプッシュ通知をクリックし、プッシュ通知の画面を開きます。
新しいプッシュ通知ボタンをクリックすると、プッシュ通知作成画面が表示されます。
このページで新たなプッシュ通知を作成できます。タイトル、メッセージ、JSONデータを記入してください。
※iOS宛プッシュ通知の設定は、合計2Kバイトまでがサポート対象となります。
※Android宛プッシュ通知の設定は、GCM配信は合計4Kバイトまで、FCM配信は合計2Kバイトまでがサポート対象となります。
配信日時の指定を行います。以下の例では、作成されたプッシュ通知が即時に配信される設定になっています。
プッシュ通知送信日時を指定する場合は、配信日時の欄で日時を選択し、希望する日時を指定してください。
配信期限の指定では電源が切れているなどの事情により通知を受け取れなかった端末への再送信期間を設定できます。デフォルトの設定では再送信できる期間が10日間となっていますが1~28日間、1~24時間の間で、期間を指定できます。
また、配信期限を日時で指定する場合は、日時の指定画面が表示されます。
次に、配信を行うプラットフォームを選択してください。AndroidとiOSの両方にプッシュ通知を送信することも可能です。
Androidを選択した場合は、以下のようにアクション設定と、ダイアログ表示の設定画面が表示されます。
iOSを選択した場合は、以下のようなiOS端末へのプッシュ通知を行うための設定画面が開きます。
最後に「プッシュ通知を作成する」ボタンをクリックすると、プッシュ通知が作成されます。
配信エラーとなった場合
プッシュ通知一覧の画面で、配信状況が配信エラーになる場合があります。
エラーが発生する場合の主な理由と対策は、以下の通りです。
Androidの場合
- iOSプッシュ通知証明書、またはAndroidプッシュ通知設定ファイルを設定していないのに、両方のOSを対象にしてプッシュ通知を登録
- 配信対象はデフォルトでiOS/Androidの両方なので、iOSプッシュ通知証明書と、Androidプッシュ通知設定ファイルのいずれかを設定していないとエラーになります。
- また、iOSプッシュ通知証明書に不具合があったり、有効期限が切れていた場合も、エラーとなります。iOSプッシュ通知証明書の有効期限切れについては、こちらもご参考ください。
※配信エラーでは無いにも関わらずプッシュ通知が届かない場合は、省電力モードの設定が影響している場合がございます。端末の設定をご確認ください。
iOSの場合
- iOS証明書の不具合
- iOS証明書を再設定し、端末情報を再度登録したうえで、プッシュ通知をテストしてください。
- iOS証明書の有効期限が切れている場合は、証明書を更新してください。※iOS証明書の有効期限切れについては、こちらもご参考ください。
- iOS証明書またはAndroidプッシュ通知設定ファイルを設定していないのに、両方のOSを対象にしてプッシュ通知を登録
- 配信対象はデフォルトでiOS/Androidの両方なので、iOS証明書とAndroidプッシュ通知設定ファイルをどちらも設定していないとエラーになります。
配信エラーとなった場合に、mBaaS管理画面からMobileSUITE mBaaS機能のログについて
確認することはできませんので、ご不明な点がございましたらお気軽にお問い合わせください。
ダミーデータを登録した端末を指定してプッシュ通知を行わない
プッシュ通知を配信する端末の中に、
テスト目的などでダミーデータを入力した端末が含まれていると、
他の端末も含めてプッシュ通知が配信されない場合がございます。
アプリ側でプッシュ通知が受信されるかを確認する場合は、
ダミーデータを含んだ端末を配信対象に含めないでください。