Skip to content
This repository has been archived by the owner on Apr 20, 2024. It is now read-only.

Send push notifications using Urban Airship ✉️

License

Notifications You must be signed in to change notification settings

ml-archive/push-urban-airship

Repository files navigation

UAPusher

Swift Version Vapor Version Circle CI codebeat badge codecov Readme Score GitHub license

Send push notifications with Urban Airship for Vapor.

📦 Installation

Install package using SPM

Update your Package.swift file.

Swift 3

.Package(url: "https://github.com/nodes-vapor/push-urban-airship.git", majorVersion: 2)

Swift 4

.package(url: "https://github.com/nodes-vapor/push-urban-airship.git", .upToNextMajor(from: "2.0.1"))
targets: [
    .target(
        name: "App",
        dependencies: [
            ...
            "UAPusher"
        ]
    ),
    ...
]

Config

Create config file uapusher.json with following syntax

{
    "applicationGroups": {
        "defaultGroup": {
            "development": {
                "appKey": "yyyy",
                "masterSecret": "yyyy"
            },
            "staging": {
                "appKey": "yyyy",
                "masterSecret": "yyyy"
            }
        }
    }
}

You can define multiple apps like in the example. Else just delete one of groups.

Getting started 🚀

Set up the provider:

import UAPusher

try config.addProvider(UAPusher.Provider.self)

Simple example

let body = try JSON(node: [
    "audience": "all",
    "device_types": [
        "ios"
    ],
    "notification": [
        "alert": "hello world"
    ]
])
        
let request = UARequest(body: body)

do {
    let response = try drop.uapusher?.send(request: request)
    if response.status == .accepted {
        print("Push sent..")
    }
} catch UAError.response(let uaResponse) {
    // let response = uaResponse.response[0]
}

The above example will send a text push notification with the message hello world to all users on the ios platform.

Chain your payload

This package offers a way to easily customize the different segments of the payload sent to Urban Airship, using the UABuilder class.

...
let payload: JSON = try UABuilder()
    .add(Audience(.all)
    .add(Notification(.alert(value:"this is a test")))
    .add(DeviceTypes(.android))
    .payload()
        
let request: UARequest = UARequest(body: payload)
...

You can also provide all segments in a list

...
let payload: JSON = try UABuilder().add([
    Audience(.all),
    DeviceTypes(.android),
    Notification(.alert(value:"this is a test"))
]).payload()
        
let request: UARequest = UARequest(body: payload)
...

The above examples will define a text push notification with the message this is a test to all users.

UABuilder currently lets you set audience, campaigns, device_type, ìn_app, message and notification. Method overloads allow you to set the payload segments directly using custom JSON or using a preset value. For more information see the Urban Airship documentation about the push object or check out the full api documentation.

🏆 Credits

This package is developed and maintained by the Vapor team at Nodes. The package owner for this project is Rasmus.

📄 License

This package is open-sourced software licensed under the MIT license.