ここではCordovaを使用して、iOS, Androidアプリを開発した場合に、どのようにしてPush通知を受け取るのかをご説明します。
プラグイン
CordovaでPush通知を受け取るためのプラグインには、phonegap-plugin-push
を使います。
AppPotへのログイン時に必要なデバイス情報の取得のために、cordova-plugin-device
を使います。
プラグインの追加
下記コマンドでプラグインを追加します。
cordova plugin add phonegap-plugin-push
cordova plugin add cordova-plugin-device
config.xml の設定
Android GCM の設定
resource-file
タグにGCMの設定を記述した、google-services.json
を設定します。
<platform name="android">
<resource-file src="google-services.json" target="app/google-services.json" />
</platform>
iOS APNs の設定
iOSのAPNsはデフォルトで設定されるので、設定は不要です。
プラグイン設定の追加
<plugin name="phonegap-plugin-push" spec="^1.9.4">
<variable name="SENDER_ID" value="123456789" />
</plugin>
デバイス登録
PushNotification.init()
にAndroid、iOSの設定値を渡してデバイスを登録します。
デバイスの登録の完了は、registration
イベントでハンドリングできます。
デバイス登録はdeviceready
イベントのコールバックで実行します。
document.addEventListener("deviceready", () => {
const push = PushNotification.init({
android: {
senderID: PushSenderId
},
ios: {
alert: true,
badge: true,
sound: true,
clearBadge: true
}
});
push.on('registration', (data)=>{
console.log('registration', data);
});
});
ログイン
Push機能を持つアプリの場合、ログイン時にデバイス情報が必要になります。
registration
イベントのコールバックでデバイス情報を取得して、AppPot.Deviceオブジェクトを作成します。
var device = {};
document.addEventListener("deviceready", () => {
const push = PushNotification.init({
....
});
push.on('registration', (data)=>{
device = new AppPot.Device({
udid: window.device.uuid,
token: data.registrationId,
name: window.device.model,
osType: window.device.platform
});
});
});
function login() {
AppPot.LocalAuthenticator.login("xxxx", "xxxx", true, device)
.then(()=>{
console.log("Logined");
}).catch((e)=>{
alert("Login Error");
});
}
通知の受信
通知の受信はnotification
イベントでハンドリングします。
通知のエラーはerror
イベントでハンドリングが可能です。
push.on('notification', (data)=>{
console.log('notification', data);
});
push.on('error', (e)=>{
console.log('error', e)
});
通知の送信
AppPotを使ってPush通知を送信するには、AppPot.sendPushNotificationメソッドを使います。
AppPot.sendPushNotification("Message", {"all":true}, "Title");
Monacaを使ったサンプル
HTML5ハイブリッドアプリ開発プラットフォーム「Monaca」を使った、Push通知のサンプルアプリのソースをこちらで公開しています。
apppot-sample-push