はじめに
こんにちは。僕は普段Elixirで開発をしています。
Elixirでバックエンド開発をしている中で、iOSへのPUSH通知を実装したのでどうやって実装したかをメモとして残しておきます。
Pigeonの導入
僕はiOSに通知を送信するためにPigeonというライブラリを使用しました。
デバイスのトークンと設定ファイルさえ用意すればPUSH通知を簡単に送信することができます。
デバイストークン取得
AppDelegate.swift
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// Convert device token to string
let tokenParts = deviceToken.map { data -> String in
return String(format: "%02.2hhx", data)
}
let token = tokenParts.joined()
print(token)
UserDefaults.standard.setValue(token, forKey: "APNKey")
}
僕は最初はAppDelegate.swift
にトークンをprintさせて入手しました。なお、このトークンはXcode内のエミュレータではなく実機でアプリをrunしないといけなかったので注意してください!
設定ファイルの用意
開発環境内でPUSH通知の確認をするので、dev.exs
にpigeonの設定を記述しました。
dev.exs
...
config :pigeon, :apns,
apns_default: %{
key: "priv/cert/AuthKey_XXXXXX.p8",
key_identifier: "XXXXXX",
team_id: "IDIDIDIDID",
mode: :dev
}
...
通知の送信
message
|> Pigeon.APNS.Notification.new(device_id, Notifications.topic())
|> Pigeon.APNS.push()
あとはこんな感じで通知が送信できます。
これだと通知のタイトルが表示されなかったりするので、
message
|> Pigeon.APNS.Notification.new(device_id, Notifications.topic())
|> Pigeon.APNS.Notification.put_alert(%{"body" => message, "title" => "お知らせ"})
|> Pigeon.APNS.push()
こんな感じにしたりすると通知にタイトルを付けたりとかできます。
短い記事でしたが以上です。