View Source Migrating to v2.0
Migrating from v2.0 RCs
See the CHANGELOG for specific breaking changes from each RC. If upgrading from RC3, no additional changes are required.
Migrating from v1.6
- Update your mix.exs dependencies.
[
{:pigeon, "~> 2.0"} # Change this
{:kadadbra, ~> 0.6.0} # Remove this
]- Update configuration of your push workers.
Pigeon push workers are now started under your application supervision tree instead of Pigeon.
Using APNS as an example, if you have a default push worker configured like this:
config :pigeon, :apns,
apns_default: %{
cert: "cert.pem",
key: "key_unencrypted.pem",
mode: :dev
}Remove the config and instead define a push worker like this:
# lib/your_app/apns.ex
defmodule YourApp.APNS do
use Pigeon.Dispatcher, otp_app: :your_app
end# config.exs
config :your_app, YourApp.APNS,
adapter: Pigeon.APNS,
cert: File.read!("cert.pem"),
key: File.read!("key_unencrypted.pem"),
mode: :devAnd add it to your supervision tree.
defmodule YourApp.Application do
@moduledoc false
use Application
@doc false
def start(_type, _args) do
children = [
YourApp.APNS
]
opts = [strategy: :one_for_one, name: YourApp.Supervisor]
Supervisor.start_link(children, opts)
end
endConfiguration of the worker can now be passed directly if desired.
defmodule YourApp.Application do
@moduledoc false
use Application
@doc false
def start(_type, _args) do
children = [
{YourApp.APNS, apns_opts()}
]
opts = [strategy: :one_for_one, name: YourApp.Supervisor]
Supervisor.start_link(children, opts)
end
defp apns_opts do
[
adapter: Pigeon.APNS,
cert: File.read!("cert.pem"),
key: File.read!("key_unencrypted.pem"),
mode: :dev
]
end
endAnd that's it! See the rest of this guide for other breaking changes specific to your push type.
Breaking Changes for ADM
No addtional changes required apart from the configuration above.
Breaking Changes for APNS
:certfileand:keyfileare no longer valid options for APNS configurations. Instead, read the file before loading (e.g.cert: File.read!("cert.pem")) (#183)
Breaking Changes for FCM
- FCM's legacy API, used by Pigeon v1.6, has been decommissioned. To upgrade, add the legacy adapter to your mix.exs and follow worker setup instructions.
def deps do
[
{:pigeon_legacy_fcm, "~> 0.2.0"}
]
end- Rename all instances of
Pigeon.FCMin your project toPigeon.LegacyFCM. For example,Pigeon.FCM.NotificationbecomesPigeon.LegacyFCM.Notification.
Once renamed, your project should now compile again.
- Upgrade to the new FCM v1 API. Follow the instructions in
Pigeon.FCMto set up a new push worker and update your Pigeon FCM notifications accordingly.