push-notifications: Push notifications for Android and iOS

[ bsd3, library, network-apis ] [ Propose Tags ]

Push notifications for Android and iOS

Functions for sending push notifications to popular mobile platforms.

[Skip to Readme]
Versions [faq] 0.2, 0.2.1
Change log ChangeLog.md
Dependencies aeson, base (>=4 && <=5), base16-bytestring (>=, binary (>=, bytestring (>=, casing, conduit (>=1.0.0), convertible (>=, data-default, HsOpenSSL (>=, http-conduit (>=1.9.1), http-types (>=0.8.0), network (>=, resourcet (>=1.1.9), text, time (>=1.4), transformers (>= [details]
License BSD-3-Clause
Copyright (c) 2019 Obsidian Systems, Teemu Ikonen, David Fendrich
Maintainer maintainer@obsidian.systems
Category Network APIs
Home page https://github.com/obsidiansystems/push-notifications
Source repo head: git clone http://github.com/obsidiansystems/push-notifications.git
Uploaded by abrar at Wed Apr 3 19:23:01 UTC 2019
Distributions NixOS:0.2.1
Downloads 84 total (27 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]




Maintainer's Corner

For package maintainers and hackage trustees

Readme for push-notifications-0.2.1

[back to package description]


Server-side push messaging from Haskell to various platforms (currently supporting iOS and Android).


Push notifications to android devices are sent via Google's Firebase service. To send push notifications via Firebase, you'll need to create a project and acquire a "server key."

To get your server key, go to the Firebase console and create or open a project. On the project settings page, there is a "Cloud Messaging" section. On that page you should be able to retrieve or create a "server key."

The server key should be passed to Network.PushNotification.Android.sendAndroidPushMessage.

To construct an android push message payload, have a look at Network.PushNotification.Android.Payload which provides a haskell datatype and JSON instances for Firebase Cloud Messaging payloads (as documented here).


Sending push notifications requires an "Apple Push Services" certificate and an Apple-provided device token.

Getting an APS Certificate

The APS certificate is produced in the iOS Provisioning Portal. Once you've generated the certificate, you can download it from the Provisioning Portal. It is usually named aps_production.cer or aps_development.cer.

The private key for the certificate can be extracted from Apple's Keychain utility as a .p12 file.

Once you have both the certificate and private key, the following commands can be used to convert the certificate and private key files into the format required by this library.

openssl x509 -in aps_development.cer -inform DER -outform PEM -out cert.pem
openssl pkcs12 -in key.p12 -out key.pem -nodes

Getting a Device Token

Device tokens are retrieved on the device itself by calling the @registerForRemoteNotifications@ method of the @UIApplication@ object.

For more information, please see Apple's documentation.


Originally based on a blog post by Teemu Ikonen, available here and packaged by David Fendrich as the "phone-push" library on hackage. That library was eventually forked and updated and, eventually, became this one.