ホームページ  >  記事  >  php教程  >  iOS 開発: PHP を使用した IOS プッシュの実装

iOS 開発: PHP を使用した IOS プッシュの実装

WBOY
WBOYオリジナル
2016-06-21 08:49:411200ブラウズ

iOS プッシュ メッセージは非常に便利な機能で、多くのアプリケーションがこの機能を備えており、リアルタイム アプリケーションのデータ フローの核となります。では、PHP を使用して iOS にプッシュ サービスを提供するにはどうすればよいでしょうか。次の記事で詳しく説明します。

ios メッセージ プッシュ メカニズムは、ios メッセージ プッシュ メカニズムを参照して実装および説明できます。

まず、pem 証明書が必要です。これは、開発中の署名に使用される証明書と一致している必要があります。 pem 証明書を生成する具体的な方法は次のとおりです:

1. iPhone 開発者接続ポータル (http://developer.apple.com/iphone/manage/overview/index.action) にログインし、[App IDs] をクリックします
2. Apple IDを作成します。ワイルドカード ID はプッシュ通知サービスでは使用できません。たとえば、com.itotem.iphone
3. Apple ID の横にある [設定] をクリックし、[ウィザード] の手順に従って署名のアップロードを生成し、生成されたライセンスをダウンロードします。
4. .cer ファイルをダブルクリックして、aps_developer_identity.cer をキーチェーンにインポートします。
5. Mac でキーチェーン アシスタントを起動し、ログイン キーチェーンで [証明書] カテゴリを選択します。拡張可能なオプション「Apple Development Push Services」を参照してください
6. このオプションを展開し、「Apple Development Push Services」を右クリックし、「Apple Development Push Services ID123」をエクスポートします。 apns-dev-cert.p12 ファイルとして保存します。
7. 「Apple Development Push Services」を展開し、「Private Key」に対しても同様の操作を行って、apns-dev-key.p12 ファイルとして保存します。
8. 端末コマンド openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
を使用して、これらのファイルを PEM 形式に変換します。 openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
9. 最後に、キー ファイルとライセンス ファイルを apns-dev.pem ファイルに結合する必要があります。これは APNS に接続するときに必要です:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev-cert.pem

PHP コードは次のとおりです:

  1. $deviceToken = $_POST['token'] //トークンを取得します
  2. ;
  3. $body = array("aps" => array("alert" => 'message', "badge" => 2, "sound" =>'default')); //コンテンツを含むプッシュメソッドと音
  4. $ctx = stream_context_create();
  5. // Windows サーバーを使用している場合は、pem パスを見つけるときに問題が発生します:
  6. へのパスを変更します。
  7. //$pem = dirname(__FILE__) . ‘apns-dev.pem’;
  8. //Linux サーバーは pem のパスを直接書き込むことができます
  9. stream_context_set_option($ctx, “ssl”, “local_cert”, “apns-dev.pem”);
  10. $pass = "123123";
  11. stream_context_set_option($ctx, ‘ssl’, ‘パスフレーズ’, $pass);
  12. //ここで選択するサーバーは 2 つあります。開発とテスト用の場合は 2 番目のサンドボックスのサーバーを選択し、リリース用の場合は製品の PEM 証明書を使用して、公式サーバーを選択します。
  13. $fp = stream_socket_client(“ssl://gateway.push.apple.com:2195“, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
  14. $fp = stream_socket_client(“ssl://gateway.sandbox.push.apple.com:2195″, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
  15. if (!$fp) {
  16. print “$err $errrstrn への接続に失敗しました”;
  17. 戻る;
  18. }
  19. print “接続OKn”;
  20. $payload = json_encode($body);
  21. $msg = chr(0) .pack(“H*”, str_replace(' ', ”, $deviceToken)) .pack(“n”,strlen($payload))ペイロード;
  22. print "メッセージを送信中:" . "n";
  23. fwrite($fp, $msg);
  24. fclose($fp);
  25. ?>

それでは、

ここで証明書が用意されています。次に、xcode で新しいテスト プロジェクトを作成します。設定したプロジェクトのバンドル識別子は、上記で構築した APP ID と同じである必要があることに注意してください。


DidFinishLaunchingWithOptions

にコードを追加します。

- (BOOL)application:(UIApplication *)application DidFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

[self.window makeKeyAndVisible];

[[UIApplicationsharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge UIRemoteNotificationTypeSound UIRemoteNotificationTypeAlert];

YES を返します;

}

- (void)application:(UIApplication *)application DidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)pToken {

NSLog(@"regisger success:%@", pToken);

}

- (void)application:(UIApplication *)application DidReceiveRemoteNotification:(NSDictionary *)userInfo{

UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"プッシュ通知" message:@"メッセージ" delegate:selfcancelButtonTitle:@"キャンセル" otherButtonTitles:nil, nil];

[アラートショー];

[アラート解除];

}

- (void)application:(UIApplication *)application DidFailToRegisterForRemoteNotificationsWithError:(NSError *)error {

NSLog(@"登録失敗%@",エラー);

}

次に http://localhost/push/push.php

にアクセスします。

iOS デバイスはプッシュ メッセージを受信します

マークを削除する別の方法は、viewDidApper に

を追加することです。

int バッジ = [UIApplicationsharedApplication].applicationIconBadgeNumber;

if(バッジ > 0)

{

バッジ--;

[UIApplicationsharedApplication].applicationIconBadgeNumber = バッジ;

}



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。