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

deviceToken を取得したので、そのデバイストークンをサーバーに送信するコードを書いてみましょう。

Swift 3.0.2
Xcode 8.2.1

 

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

 

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

 
取得したデバイストークンをサーバー上のphpに、HTTP POSTで送り
それをhtmlで確認するような流れで作ってみます

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

 

アプリ: POST送信

 
AppDelegate.swift に以下のように記述してデバイストークンをPOSTで送信します。
 

 
トークンは <237fd3b4 4567abcdf …. …. …. 61017309> のような形式で取得していたので、<> とスペースを除去します
 
(注)https://hoge.hage.jp とHTTPS対応サーバーを使った例ですが、http://… の場合はATS対策として Info.plist に設定が必要です。
まあ最近とんでもなく安く(無料?)サーバーさんがSSL対応してくれますのでここでInfo.plistに設定するよりも早く解決するかもしれません。
 

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

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

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

 
確かにDeviceTokenが送られています。次はサーバーからAPNsへのアクセスです
 

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

ページのトップへ戻る

シェアする

  • このエントリーをはてなブックマークに追加

フォローする