We recommened using number 3, the semantically safest API to ensure your push notification is delivered correctly. This README assumes that you are using number 3. However if you need more granular approach, or something doesn’t exist in this library, please use 2 or 1. (Also please open an issue if we missed something so we can get a semantically correct version!)
Getting Started
APNSwift aims to provide sementically correct structures to sending push notifications. You first need to setup a APNSClient. To do that youll need to know your authentication method
It requires sending ContentState matching with the live activity configuration to successfully update activity state. ContentState needs to conform to Encodable
APNSwift provides two authentication methods. jwt, and TLS.
jwt is preferred and recommend by Apple
These can be configured when created your APNSClientConfiguration
Notes: jwt requires an encrypted version of your .p8 file from Apple which comes in a pem format. If you’re having trouble with your key being invalid please confirm it is a PEM file
By default APNSwift has a no-op logger which will not log anything. However if you pass a logger in, you will see logs.
There are currently two kinds of loggers.
Background Activity Logger
This logger can be passed into the APNSClient and will log background things like connection pooling, auth token refreshes, etc.
Notification Send Logger
This logger can be passed into any of the send: methods and will log everything related to a single send request.
Using the non semantic safe APIs
APNSwift provides the ability to send raw payloads. You can use Data, ByteBuffer, DispatchData, Array
Though this is to be used with caution. APNSwift cannot gurantee delivery if you do not have the correct payload.
For more information see: Creating APN Payload
/// Extremely Raw,
try await client.send(
payload: payload,
deviceToken: token,
pushType: "alert", deadline: .distantFuture
)
/// or a little safer but still raw
try await client.send(
payload: payload,
deviceToken: token,
pushType: .alert,
expiration: .immediatly,
priority: .immediatly,
deadline: .distantFuture
)
For an iOS example, open the example project within this repo.
Once inside configure your App Bundle ID and assign your development team. Build and run the ExampleApp to iOS Simulator, grab your device token, and plug it in to server example above. Background the app and run Program.swift
APNSwift
A non-blocking Swift module for sending remote Apple Push Notification requests to APNS built on AsyncHttpClient.
Installation
To install
APNSwift
, just add the package as a dependency in your Package.swift.If youd like to give our bleeding edge release a try, which is what the Readme is expecting use
5.0.0-beta.N
. If you need the old Readme, see hereFoundations
APNSwift
is built with a layered approach. It exposes three tiers of API’s.String
‘sAPNSPriority
,APNSPushType
,APNSNotificationExpiration
, etc.APNSAlertNotification
We recommened using number 3, the semantically safest API to ensure your push notification is delivered correctly. This README assumes that you are using number 3. However if you need more granular approach, or something doesn’t exist in this library, please use 2 or 1. (Also please open an issue if we missed something so we can get a semantically correct version!)
Getting Started
APNSwift aims to provide sementically correct structures to sending push notifications. You first need to setup a
APNSClient
. To do that youll need to know your authentication methodSending a simple notification
All notifications require a payload, but that payload can be empty. Payload just needs to conform to
Encodable
Sending Live Activity Update / End
It requires sending
ContentState
matching with the live activity configuration to successfully update activity state.ContentState
needs to conform toEncodable
Authentication
APNSwift
provides two authentication methods.jwt
, andTLS
.jwt
is preferred and recommend by Apple These can be configured when created yourAPNSClientConfiguration
Notes:
jwt
requires an encrypted version of your .p8 file from Apple which comes in apem
format. If you’re having trouble with your key being invalid please confirm it is a PEM fileLogging
By default APNSwift has a no-op logger which will not log anything. However if you pass a logger in, you will see logs.
There are currently two kinds of loggers.
Background Activity Logger
This logger can be passed into the
APNSClient
and will log background things like connection pooling, auth token refreshes, etc.Notification Send Logger
This logger can be passed into any of the
send:
methods and will log everything related to a single send request.Using the non semantic safe APIs
APNSwift provides the ability to send raw payloads. You can use
Data
,ByteBuffer
,DispatchData
,Array
Though this is to be used with caution. APNSwift cannot gurantee delivery if you do not have the correct payload. For more information see: Creating APN PayloadServer Example
Take a look at Program.swift
iOS Examples
For an iOS example, open the example project within this repo.
Once inside configure your App Bundle ID and assign your development team. Build and run the ExampleApp to iOS Simulator, grab your device token, and plug it in to server example above. Background the app and run Program.swift
Original pitch and discussion on API