スマホのプッシュ通知
iOS:Apple Push Notification Service(APNs)
Android:Google Cloud Messaging(GCM)
①Apple / google よりデバイストークンを取得
②アプリ用サーバにデバイストークンを登録
(ユーザーIDや端末IDと紐づけて送信)
③デバイストークンとメッセージを送信
$ curl \
--header "Authorization:key=【APIキー】"\
--header "Content-Type:\"application/json\""\
https://android.googleapis.com/gcm/send\
-d"{\"registration_ids\":[\"【RegistrationID】\"],\"data\":
{\"message\":/"Hello monotty!\"}}"
iOSのプッシュ通知
Command, Frame data(Item, Item)
device_id, os, device_token
AndroidはテキストベースのシンプルなHTTP通信で送信できる
iOSは、ApnsPHPを使う
function connectAPSN($sslclient,$pem_path,$passphrase){
$ctx = stream_content_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $pem_path);
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
$fp = stream_socket_client($sslclient, $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp){
echo "接続エラーになったので1秒後再接続を試みます。メメタア!". PHP_EOL;
sleep(1);
$fp = connectAPSN($sslclient,$pem_path,$passphrase);
return $fp;
} else {
echo "APNS接続OK" . PHP_EOL;
return $fp;
}
// 送信処理
$passphrase = 'password';
$pem_path = '/xxx/xxx.pem';
$sslclient = 'ssl://gateway.sandbox.push.apple.com:2195';
$fp = connectAPSN($sslclient,$pem_path,$passphrase);