Tech Blog

グローバルな家族アプリFammを運営するTimers inc (タイマーズ) の公式Tech Blogです。弊社のエンジニアリングを支える記事を随時公開。エンジニア絶賛採用中!→ https://timers-inc.com/engineering

気軽にプッシュ通知のテストがしたい【iOS10以降対応】

お久しぶりです!iOSチームのかっくん(@fromkk)です。

iOS 10がリリースされましたね!
様々な機能が搭載されましたが最も目につくのはプッシュ通知に画像が表示出来たり直接返信が出来る機能じゃないでしょうか?
新しい機能を試してみたりするのも楽しいですが、プッシュ通知って気軽にテストし辛いですよね。
特に弊社の場合サーバーチームとiOSチームで分かれていて、しかもプロジェクトも多忙だったりするとちょっとした修正も頼み辛いので、サーバーに変更が必要な事って試し辛かったりするんですよね。。
でもプッシュ通知ってIPアドレスで制限されていたりするわけじゃないので自分で作ってしまえばいいじゃない!ということで Docker を利用して作ってみました。


構築したものは こちら です。

Mac OSDocker がインストールされている事を前提にしています。
構築する環境は下記の通りです。

また、iOS端末のデバイストークン、 .pem ファイル、アプリのBundle Identifierはご自身で用意して下さい。

ソースをダウンロード

まずは、ターミナルでソースを落としてきます。

git clone git@github.com:fromkk/apns_docker.git
cd ./apns_docker

イメージを作成

Dockerのイメージを作成します。

docker build -t apns:ubuntu .

暫く時間が掛かるのでその間に share/apns/apns.sh ファイルを編集して下さい。

# iOSデバイストークン
token="YOUR TOKEN HERE"
# .pemのフルパス
pemfile="PEM FILE PATH HERE"
# Bundle Identifier
bundleIdentifier="BUNDLE IDENTIFIER HERE"
# Pushで送信するデータをJSON形式で記述
pushData='{"aps": {"alert": "Push Test", "sound": "default", "badge": 3}}'

Dockerの起動

Dockerのイメージの作成が無事完了したら起動してみましょう。

docker run -it -v `pwd`/share/apns:/apns apns:ubuntu /bin/bash

プッシュの送信

下記コマンドで指定したデバイストークンにプッシュを送信します。

sh /apns/apns.sh

無事届きましたでしょうか?
iOS 9まではAPNSの仕組みが凄くややこしくて大変だったんですがiOS 10からHTTP2に対応してプッシュの送信が簡単になりました!
細かい仕様は こちら を参照下さい。
これで通知に関するテストが凄くしやすくなったのでどんどん新しい機能を試していきましょう!


子育て家族アプリFammカップル専用アプリPairyを運営する Timers inc. では、現在エンジニアを積極採用中!急成長中のサービスの技術の話を少しでも聞いてみたい方、スタートアップで働きたい方など、是非お気軽にご連絡ください!
採用HP : http://timers-inc.com/engineerings

Timersでは各職種を積極採用中!

急成長スタートアップで、最高のものづくりをしよう。

募集の詳細をみる