スマホのプッシュ通知
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);