11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ElixirでiOSのPUSH通知

Posted at

はじめに

こんにちは。僕は普段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()

こんな感じにしたりすると通知にタイトルを付けたりとかできます。

短い記事でしたが以上です。

11
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?