apns2

Crates.ioapns2
lib.rsapns2
version0.1.0
sourcesrc
created_at2018-02-25 12:25:34.018684
updated_at2018-02-25 12:25:34.018684
descriptionApple Push Notification Service (apns) client library
homepage
repositoryhttps://github.com/theduke/apns2-rust
max_upload_size
id52783
size35,785
Christoph Herzog (theduke)

documentation

https://docs.rs/apns2

README

apns2-rust

A Rust crate for sending push notifications to iOS devices via the APNS http/2 API.

Usage

Cargo.toml:

[dependencies]
apns2 = "*"
failure = "*"
extern crate apns2;
extern crate failure;

use failure::Error;

fn send(device_token: String, alert: String) -> Result<(), Error> {
    let apns = apns2::Apns::with_certificate(
        "certs/apns_cert.p12", // Path to p12 certificate + key db file.
        Some("passphrase".to_string()), // Passphraase used for the p12 file.
    )?;
    let notification = NotificationBuilder::new(topic, token)
        .title("title")
        .body("body")
        .sound("somesound.mp3")
        .badge(5)
        .build();
    apns.send(n)?;
    
    Ok(())
}

Client

Sadly, no native http/2 Rust libraries are mature enough to be used, so this crate currently uses cURL via rust-curl. Once the ecosystem catches up, a native Rust solution will be used.

Todo

  • Add JWT authentication token support
  • Add async tokio implementation with tokio-curl

License

This library is dual-licensed under Apache and MIT.

Check the license files in this repo for details.

Commit count: 2

cargo fmt