/swift-apns

Swift Framework for sending Apple Push Notification over HTTP/2 API

Primary LanguageSwiftApache License 2.0Apache-2.0

Logo

Simple framework for sending Apple Push Notifications.

Carthage compatible

Version

Platform

Table of Contents

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

To integrate swift-apns into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'APNS', '~> 1.0'
end

Then, run the following command:

$ pod install

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

$ brew install carthage

To integrate swift-apns into your Xcode project using Carthage, specify it in your Cartfile:

github "alexeyxo/swift-apns"

Run carthage update to build the framework and drag the built .framework file into your Xcode project.

Usage

Simple Example

let aps = ["sound":"default", "alert":"testPush()"]
let payload = ["aps":aps]
try! APNSNetwork().sendPush("com.myapp.bundle",
        priority: 10,
        payload: payload,
        deviceToken: "3dd55a59056441ab275b8b679458388cae76be3a9a02a00234388e50fe91f2fe",
        certificatePath: NSBundle.mainBundle().pathForResource("push", ofType: "p12")!,
        passphrase: "123456",
        sandbox: true) { (response) -> Void in

        }

Using with "Protocol Buffers"

Required Protocol Buffers 3.0 and protobuf-swift.

Simple Example

let providerData = Apple.Apns.ProviderData.Builder()
providerData.bundle = "com.advisa.voipservice"
providerData.serviceIdentity = Apple.Apns.ProviderData.Identity.Development
providerData.priority = 10
providerData.certificatePath = NSBundle(forClass:UnitTest.self).pathForResource("push", ofType: "p12")!
providerData.certificatePassphrase = "123456"
providerData.token = "3dd55a59056441ab275b8b679458388cae76be3a9a02a00234388e50fe91f2fe"

let aps = Apple.Apns.Push.Aps.Builder()
aps.badge = 1
aps.contentAvailable = 1
aps.sound = "default"
aps.alert = "testSendProtobuf()"
do {
    let payload = try Apple.Apns.Push.Builder().setAps(aps.build()).build()
    providerData.payload = payload
    try APNSNetwork().sendPush(providerData.build(), responseBlock: { (response) -> () in
        print(response)
    })
} catch {

}

Sending Custom Objects

  1. Edit ./Source/ProtoSource/PushService.proto:
...
message Push {
    message Aps {
        string alert = 1;
        string sound = 2;
        int32 badge = 3;
        int32 content_available = 4;
        string category = 5;
    }

    message ExampleCustomObject {
        string objectId = 1;
    }

  Aps aps = 1;
    ExampleCustomObject customObject = 2;
}
  1. Compile new object:
protoc PushService.proto --swift_out="../"

Credits

  • The bird used in the logo - as well as the cloud - are borrowed respectively from the original Swift and APNs logos which have *All Rights Reserved to Apple Inc.

  • The font used in logo comes from the San Francisco family.