Elixirでのモバイル通知でpigeonを使う

Taillook
Undefined Engineering
3 min readJul 22, 2018

どうも株式会社UNDEFINEDのエンジニアインターンのしているている(@Taillook)です

はじめに

モバイルアプリには通知が必要不可欠です.今回はAndroid,iOS両対応の通知ライブラリを探してpigeonというライブラリが使いやすそうだったのでこれを使うことにしました.

使ってみる

フレームワークはPhoenixを使っています

pigeonのインストール

mix.exsに以下を記述.

def deps do
[
{:pigeon, "~> 1.2.2"},
{:kadabra, "~> 0.4.2"}
]
end

※kadabraはpigeonの用のhttp2クライアント

mix deps.getでインストール

iOSの通知

設定

config.exsに以下を記述.

config :pigeon, :apns,
apns: %{
key: "AuthKey_ABC1234567.p8",
key_identifier: "ABC1234567",
team_id: "DEF8901234",
mode: :prod
}

AuthKeyはAppleDeveloperでダウンロードできます.

key_identifierはAuthKey_xxxxxxx.p8のxxxxxxxの部分です.

team_idはAppleDeveloperのページで確認できます.

modeはビルドのモードで変わり,Debug時はdev,Adhoc・Release時はprodになります.

通知パケットの作成

notifi_packet = Pigeon.APNS.Notification.new(
%{"title" => title, "body" => body},
"device token",
"bundle identifier"
)

通知の送信

Pigeon.APNS.push(notifi_packet)

Androidの通知(FCM)

設定

config :pigeon, :fcm,
fcm_default: %{
key: "fcm_key"
}

通知パケットの作成

notifi_packet = Pigeon.FCM.Notification.new(
token,
%{"title" => title, "body" => body}
)

通知の送信

Pigeon.FCM.push(notifi_packet)

さいごに

今回,pigeonについて解説しました.ちなみに開発時iOSでの実行時に上記のmodeを間違ってしまい少し詰まりました.

FCMトークンとAPNSトークンを同時に扱いたいなといったときはFCMの場合トークン文字列にコロンがあるためそこで判別するといいと思います.

このライブラリは簡単に通知を送ることができるためおすすめです.

--

--