View Source Pigeon.FCM (Pigeon v2.0.1)
Pigeon.Adapter for Firebase Cloud Messaging (FCM) push notifications.
Getting Started
Create a dispatcher.
# lib/your_app/fcm.ex
defmodule YourApp.FCM do
use Pigeon.Dispatcher, otp_app: :your_app
endInstall and configure Goth.
Install and configure goth
if you haven't already. Pigeon.FCM requires it for token authentication.
Configure your dispatcher.
Configure your FCM dispatcher and start it on application boot.
# config.exs
config :your_app, YourApp.FCM,
adapter: Pigeon.FCM,
auth: YourApp.Goth, # Your Goth worker configured in the previous step.
project_id: "example-project-123"Add it to your supervision tree.
defmodule YourApp.Application do
@moduledoc false
use Application
@doc false
def start(_type, _args) do
children = [
{Goth, name: YourApp.Goth},
YourApp.FCM
]
opts = [strategy: :one_for_one, name: YourApp.Supervisor]
Supervisor.start_link(children, opts)
end
endIf preferred, you can include your configuration directly.
defmodule YourApp.Application do
@moduledoc false
use Application
@doc false
def start(_type, _args) do
children = [
{Goth, name: YourApp.Goth},
{YourApp.FCM, fcm_opts()}
]
opts = [strategy: :one_for_one, name: YourApp.Supervisor]
Supervisor.start_link(children, opts)
end
defp fcm_opts do
[
adapter: Pigeon.FCM,
auth: YourApp.Goth,
project_id: "example-project-123"
]
end
endCreate a notification.
n = Pigeon.FCM.Notification.new({:token, "reg ID"}, %{"body" => "test message"})Send the notification.
On successful response, :name will be set to the name returned from the FCM
API and :response will be :success. If there was an error, :error will
contain a JSON map of the response and :response will be an atomized version
of the error type.
YourApp.FCM.push(n)Customizing Goth
You can use any of the configuration options (e.g. :source) for Goth. Check out the
documentation of Goth.start_link/1
for more details.