Help us understand the problem. What is going on with this article?

macOS High SierraのcURLで手軽にPUSH通知が送れるようになった

macOSをHigh Sierraにアップデートしたら、cURLのバージョンが7.54.0になっており、さらにHTTP/2の利用ができるようになっていました。

iOS10からはAPNs Provider APIを利用したPUSH通知が受け取れていたため、pemファイルさえあればローカルのmacOSからiPhone実機へ向けたPUSH通知を送れます。

念のため、curlコマンドからnghttp2込みでビルドされているのを確認するのは-Vです。

$ curl -V
curl 7.54.0 (x86_64-apple-darwin17.0) libcurl/7.54.0 LibreSSL/2.0.20 zlib/1.2.11 nghttp2/1.24.0
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz HTTP2 UnixSockets HTTPS-proxy

Dockerを使った記事である気軽にプッシュ通知のテストがしたい【iOS10以降対応】を参考にして、macOSのcURLからAPNs Provider APIを利用するスクリプトapns.shを用意する例を示すと、下記のようになります。

$ apns.sh key.pem iPhone実機のデバイストークン

これは引数でpemファイルのパス、デバイストークンを指定するようにしています。

apns.sh
#!/bin/sh

pemfile=$1
token=$2
pushData='{"aps": {"alert": "push dev test"}}'

bundleIdentifier="アプリのBundle ID"

appleUri="https://api.development.push.apple.com/3/device/"

curl -v \
-d "$pushData" \
-H "apns-priority: 10" \
-H "apns-expiration: 0" \
-H "apns-topic: ${bundleIdentifier}" \
--http2 \
--cert ${pemfile} \
${appleUri}${token}

iOSアプリを開発するmacOS標準で用意してくれているcurlコマンドさえ叩けばいいという利点は大きいので、例えばプラグイン作ってmacアプリからPUSH通知呼び出すとか。ちょっと工夫すればいろんな遊びがありそうですね。

yimajo
株式会社キュリオシティソフトウェアの代表です。iOSアプリを作っています。最近はRxSwift研究読本書いてます。 https://swift.booth.pm/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした