IOSプッシュメッセージphpプッシュ

9165 ワード

1. 
deviceTokenはiosから
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)pToken {    NSLog(@"regisger success:%@", pToken);        //    , deviceToken                }

2.手順
1.iPhone Developer Connection Portal(http://developer.apple.com/iphone/manage/overview/index.action)をクリックし、App IDs 2をクリックします.Apple IDを作成します.ワイルドカードIDは、通知サービスをプッシュするために使用できません.例えば、com.itotem.iphone 3. Apple IDの横にある「Configure」をクリックし、「ウィザード」の手順に従って署名アップロードを生成し、生成されたライセンスをダウンロードします.4.ダブルクリックcerファイルはあなたのapsをdeveloper_identity.cerはKeychainにインポートされます.5.MacでKeychainアシスタントを起動し、login keychainでCertificates分類を選択します.拡張可能なオプション「Apple Development Push Services」6が表示されます.このオプションを拡張し、「Apple Development Push Services」>「Export」「Apple Development Push Services ID 123」を右クリックします.apns-dev-cert.p 12ファイルとして保存します.(ここで注意すべきはCertificates分類において)7.「Apple Development Push Services」を拡張して「Private Key」と同様に操作し、apns-dev-keyとして保存する.p 12ファイル.8.端末コマンドによりこれらのファイルをPEM形式に変換する:openssl pkcs 12-clcerts-nokeys-out apns-dev-cert.pem-in apns-dev-cert.p 12 openssl pkcs 12-nocerts-out apns-dev-key.pem -in apns-dev-key.p12 9. 最後に、キーとライセンスファイルをapns-dev.pemファイルに合成する必要があります.このファイルはAPNSに接続する際に使用する必要があります:cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
3.php呼び出し
$deviceToken= '2bf6e8f97942b07e3dd790d70f52x18a4d50338b5bb00f6f14d8bb6f775a6d98'; //    $body = array("aps" => array("alert" => 'message',"badge" => 2,"sound"=>'default'));  //$ctx = stream_context_create();//   Windows     ,  pem      ,          ://$pem = dirname(__FILE__) . '/' . 'apns-dev.pem';//linux        pem     stream_context_set_option($ctx,"ssl","local_cert","apns-dev.pem");$pass = "xxxxxx";stream_context_set_option($ctx, 'ssl', 'passphrase', $pass);//            ,        ,     sandbox       Dev pem  ,       ,  Product pem         $fp = stream_socket_client("ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);$fp = stream_socket_client("ssl://gateway.sandbox.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);if (!$fp) {echo "Failed to connect $err $errstrn";return;}print "Connection OK
";$payload = json_encode($body);$msg = chr(0) . pack("n",32) . pack("H*", str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;echo "sending message :" . $payload ."
";fwrite($fp, $msg);fclose($fp);