[iPhone] APNs プッシュ通知、トークンを送信

デバイストークン取得した後、サーバーに送信しましょう

  1. Client App から端末に APNs にSSL接続させ deviceToken を取得
  2. Client App が Provider に deviceToken を送出
  3. Provider がその deviceToken を使って特定端末に通知を送る
  4. Client App リモート通知受信のケース分け

 

トークンをサーバーに送信

 
取得したデバイストークンをプロバイダーに、HTTP POSTで送って
それをアプリから確認するような流れで作ってみます

  1. トークンを受信する php ファイルを get_device_token.php として、
    例えば、http://hoge.hage.jp/iphone/test/ 以下に置きます
    (注)http://hoge.hage.jp/… は便宜上使っていますが架空のアドレスです
  2. get_device_token.php はデバイストークンを受信後、
    そのトークンを含めた display_device_token.html を作成
  3. display_device_token.html にアクセスしてトークンを確認

 
AppDelegate.m に以下のように記述して
デバイストークンを送信
 

 
didRegisterForRemoteNotificationsWithDeviceToken
前のページ(1)でのデバイストークンの取得においては
そのまま NSData でトークンをゲットしていました
トークンは <237fd3b4 4567abcdf …. …. …. 61017309> のような形式で取得していたので
<> とスペースを除去します
 
sendToken:(NSString *)sToken
というメソッドで整形したトークンをPOSTで
サーバー(http://hoge.hage.jp/iphone/test/get_device_token.php)に NSURLConnection を使って送信します
 

サーバーでデバイストークンを受信

 
POSTで送られたデータを受信します
サーバー上の http://hoge.hage.jp/iphone/test/get_device_token.php は以下の内容です
 

 
ここからは iOS ではなく php の話になりますが
file_put_contents();ファイルに書き込む
ob_start();出力のバッファリングを有効
ob_get_contents() ; 出力用バッファの内容を返す
ob_end_clean() ;出力用バッファをクリア(消去)し、出力のバッファリングをオフ
 
$_POST[‘DeviceToken’] の箇所で、アプリから送られた
DeviceToken=1234…. のトークンを受け取り
html ファイルに書き出します
 
最後に http://hoge.hage.jp/iphone/test/display_device_token.html にアクセスして
デバイストークンがアプリで取得した物と同じである事を確認してください
 
apns3_12
 

  1. Client App から端末に APNs にSSL接続させ deviceToken を取得
  2. Client App が Provider に deviceToken を送出
  3. Provider がその deviceToken を使って特定端末に通知を送る
  4. Client App リモート通知受信のケース分け