pusher/push-notifications-server-swift
`swift build`
Building the project
swift build
Running the tests
swift test
Installation
To include PushNotifications in your package, add the following to your Package.swift file.
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "YourProjectName",
dependencies: [
...
.package(url: "git@github.com:pusher/push-notifications-server-swift.git", from: "1.0.3",
],
targets: [
.target(name: "YourProjectName", dependencies: ["PushNotifications", ... ])
]
)Use import PushNotifications to access the APIs.
Usage
Migrating from 1.x to 2.x
The 2.0 release contains several improvements, however there are a few breaking API changes if you are upgrading from a 1.x release:
<details> <summary>Migration notes</summary>
- The SDK replaces its own
Resultimplementation the <a href="https://developer.apple.com/documentation/swift/result">Result</a> type included in Swift 5.0. The API changes subtly when inspecting the result value (e.g. when using aswitchstatement):
- .value(let anObject): becomes .success(let anObject): - .error(let anObject): becomes .failure(let anObject):
- Errors returned by the SDK in a
Resultare now specifically instances ofPushNotificationsErrorrather than justError. PushNotificationsErrorhas some changes:
- New error cases have been added covering the error conditions that were previously reported using the .error(String) (which has been removed). Testing against SDK errors in your own server app is now straightforward and more robust as no String equality checks are required. - It now conforms to LocalizedError. A human-readable description of an error can be accessed using the localizedDescription property on the error.
- The
publish(::completion:)method has been removed (this was deprecated in a previous release). ThepublishToInterests(::completion:)method can be used instead.
</details>
Code examples
// Pusher Beams Instance Id.
let instanceId = "c7c52433-8c65-43e6-9ef2-922d9ed9e196"
// Pusher Beams Secret Key.
let secretKey = "39817C9BCBF7F053CB151343D54EE75"
// PushNotifications instance.
let pushNotifications = PushNotifications(instanceId: instanceId, secretKey: secretKey)
// Interests array.
let interests = ["pizza", "donuts"]
// Publish request: APNs, FCM.
let publishRequest = [
"apns": [
"aps": [
"alert": "Hello"
]
],
"fcm": [
"notification": [
"title": "Hello",
"body": "Hello, world",
]
]
]
// Publish To Interests
pushNotifications.publishToInterests(interests, publishRequest, completion: { result in
switch result {
case .success(let publishId):
print("\(publishId)")
case .failure(let error):
print("\(error)")
}
})
// Publish To Users
pushNotifications.publishToUsers(["jonathan", "jordan", "luís", "luka", "mina"], publishRequest, completion: { result in
switch result {
case .success(let publishId):
print("\(publishId)")
case .failure(let error):
print("\(error)")
}
})
// Authenticate User
pushNotifications.generateToken("Elmo", completion: { result in
switch result {
case .success(let jwtToken):
// 'jwtToken' is a Dictionary<String, String>
// Example: ["token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhYWEiLCJleHAiOjE"]
print("\(jwtToken)")
case .failure(let error):
print("\(error)")
}
})
// Delete User
pushNotifications.deleteUser("Elmo", completion: { result in
switch result {
case .success:
print("User deleted 👌")
case .failure(let error):
print("\(error)")
}
})Documentation
Full documentation of the library can be found in the API docs.
Reporting bugs and requesting features
- Found a bug? Please open an issue.
- Have a feature request. Please open an issue.
- If you want to contribute, please submit a pull request (preferably with some tests).
Credits
Beams is owned and maintained by Pusher.
It uses code from the following third-party repositories:
License
This project is released under the MIT license. See LICENSE for details if you want to use it in your own project(s).
Package Metadata
Repository: pusher/push-notifications-server-swift
Default branch: master
README: README.md