Home
Softono

Swift Apns

Open source Apache-2.0 Swift
155
Stars
19
Forks
5
Issues
5
Watchers
9 years
Last Commit

 About Swift Apns

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

Platforms

Web Self-hosted macOS iOS

Languages

Swift

Links

Need Help Installing Swift Apns?

We provide expert installation service for this software. Our team will install, configure, and secure Swift Apns on your server. plans start at just $30.

Swift Apns

View on GitHub

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(topic: "com.asdasd.asdasdas", priority: 10, payload: payload, deviceToken: "3dd55a59056441ab275b8b679458388cae76be3a9a02a00234388e50fe91f2fe", certificatePath: Bundle(for:UnitTest.self).pathForResource("push", ofType: "p12")!, passphrase: "123456", sandbox: true, responseBlock: { (response) in
        XCTAssertTrue(response.serviceStatus.0 == 200)
        self.expectation.fulfill()
    }, networkError: { (error) in
        
})
        
        let aps = ["sound":"default", "alert":"testPush()"]
        let payload = ["aps":aps]
        let str = Bundle(for:UnitTest.self).pathForResource("cert", ofType: "p12")!
        var mess = ApplePushMessage(topic: "com.tests.asdasdasd",
                             priority: 10,
                             payload: payload,
                             deviceToken: "3dd55a59056441ab275b8b679458388cae76be3a9a02a00234388e50fe91f2fe",
                             certificatePath:str,
                             passphrase: "123456",
                             sandbox: true,
                             responseBlock:nil,
                             networkError:nil, session: nil)
        
        mess.responseBlock = { response in
        }
        
        mess.networkError = { err in
            if (err != nil) {

            }
        }
        _ = try! mess.send() // OR try! mess.send(session:<URLSession>) 
        

Using with "Protocol Buffers"

Required Protocol Buffers 3.0 and protobuf-swift.

Simple Example

let providerData = Apple.Apns.ProviderData.Builder()
providerData.bundle = "com.aasdad.asdasdsdfa"
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.