プッシュ通知

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