Skip to content

Simple Microservice for sending iOS and Android push notifications

Notifications You must be signed in to change notification settings

christianswanepoel/micropush

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Micropush

Dead simple Microservice for push notifications on iOS and Android.

Install

  1. Download

    git clone https://github.com/Jasonette/micropush.git
    
  2. Set up

    1. Get private keys

    2. Update .env file: Open the .env file inside the root directory and make changes.

      • If supporting iOS
        1. update the ios_p8 attribute value with the name of the p8 file you pasted (example: apns.p8)
        2. update both the ios_keyid and ios_teamid with corresponding values (Learn how to retrieve keyid and teamid)
      • If supporting Android,
        1. update the android_apikey attribute with the api key we got from "Get private keys" step.
  3. Deploy

    • Development: Just run npm start to run the server on localhost
    • Production: Push to heroku or wherever you want. That's it!

Usage

Sending a push is a simple as:

  • making a POST request of 'Content-Type': 'application/json'
  • to your Micropush server endpoint
  • with a JSON payload that follows the convention described below:

Micropush JSON protocol

The payload contains two attributes:

  1. type: Either $push.android or $push.ios
  2. options: options to send to micropush. Micropush will interpret this JSON depending on whether it's $push.android or $push.ios.

Micropush will interpret the options object based on the type attribute. See below section for details.

Options syntax

Android

In case of Android, the protocol is straight-forward. It completely follows the Firebase Cloud Messaging HTTP protocol: https://firebase.google.com/docs/cloud-messaging/http-server-ref

Here's an example (Notice that the options object follows the FCM Downstream HTTP messages protocol :

{
  "type": "$push.android",
  "options": {
    "to": "[DEVICE_TOKEN_GOES_HERE]",
    "data": {
      "href": {
        "url": "https://news.ycombinator.com",
        "view": "web"
      }
    },
    "priority": "high",
    "notification": {
      "title": "android",
      "sound": "default",
      "body": "this is a message for android"
    }
  }
}

iOS

In case of iOS it's not interpreted literally. Instead there are 3 attributes:

  1. to: Must contain two sub-attributes "token" and "topic"
    • token: Device token to send push to
    • topic: Your app's bundle id
  2. notification: This part represents the aps payload you send to APNS.
  3. data: Custom JSON payload which is accessible as userInfo inside application:didReceiveRemoteNotification:

Here's an example JSON payload for iOS:

{
  "type": "$push.ios",
  "options": {
    "to": {
      "token": "[DEVICE_TOKEN_GOES_HERE]",
      "topic": "[APP_BUNDLE_ID_GOES_HERE]"
    },
    "data": {
      "href": {
        "url": "https://news.ycombinator.com",
        "view": "web"
      }
    },
    "notification": {
      "alert": "\uD83D\uDCE7 \u2709 You have a new message",
      "sound": "default"
    }
  }
}

Example

  • Check out /test folder for console based examples.
  • Check out Micropusher to instantly try on the web

About

Simple Microservice for sending iOS and Android push notifications

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%