IOS
Push.Delivery offers the possibility to send push notifications to iOS devices over Apple APNS.
App-Integration
Therefore it is neccesary to integrate the subscription API with your specific iOS App. The the subscription API gives full flexibility for developers to handle the end user tag/topic subscriptions.
Authentification methods
Currently we are offering our clients two methods for authentification:
-
Certificate Based
-
Token Based
Certificate Based
For certificate based push, it is neccessary to use a certificate to establish a secure connection. This certificate can be obtained from Apple through an developer account and has to be provided by the App developer. More information about that can be found here.
Certificate based pushes have the disadvantage that there is no instant feedback on deviceIDs which are expired which could result in pushing to many devices which are not active anymore. To solve this issue we have an additional cleanup service which connects to APNs and runs periodically to get feedback on invalidated and expired devices and cleans them from the database.
Whereas we recommend our clients to use Token Based authentification.
Token Based
Token based push is another way of establishing a secure connection to APNs. Therefore, a token is required, which can be generated through an app developer account and put into Push.Delivery. More information about that can be found here.
We encourage our users to use token based authentification as there is an instant feedback on expired devices and no additional cleanup job (like for certificate based pushes) necessary.
Setup iOS in Admin UI
Please go into the "Apps" tab and add a new App.
Give your App a name, e.g. "My iOS App".
Then select the platform "iOS".
Upload an icon for the channel. This is only used inside the Push Admin so that you easier can recognize the channels by image.
Also it is required to use a Push template. This template is used to define the information that will be sent with the iOS Push.
You can use this default template and modify it to your individual needs:
Also you have the possibility to choose between the two authentication methods:
-
Certificate based
-
Token based
If you go for certificate based pushes you can upload your certificate together with the Keystore password and "save".
If you use token based pushes you can upload your token and enter the other requested information:
-
Key ID
-
Team ID
-
Apple App Bundle ID
After successfully creating the App for iOS the following information will be automatically shown inside the App:
-
ApiUser: This is the API username.
-
Password: This is the password for the API user.
-
AccessToken: Instead of using username and password an Acess Token is created.
-
platformId: The platform ID.
-
AppId: The App ID.
After setting up the App, it is time to create Tags that users can register for.
Customize Payload
You can use this default template and modify it to your individual needs.
Default template:
[ { "operation": "shift", "spec": { "title": "alertObj.title", "message": "alertObj.body", "url": "customFields.web-site-url" } }, { "operation": "default", "spec": { "badge": 0, "sound": "default", "rich": true } } ]
Default payload before transformation:
{ "title": "Default Title", "message": "This is the default message", "url": "/web-service/sample-link" }
Default payload after transformation:
{ "alertObj" : { "title" : "Default Title", "body" : "This is the default message" }, "customFields" : { "web-site-url" : "/web-service/sample-link" }, "rich" : true, "sound" : "default", "badge" : 0 }
Message Object:
Parameter |
Type |
Description |
Required |
Defaults |
Comments |
alertObj.title |
String |
alert title |
Required |
- |
|
alertObj.body |
String |
alert body |
Required |
- |
|
alertObj.launch-image |
String |
APNS setting launch-image |
Optional |
- |
|
alertObj.title-loc-key |
String |
APNS setting title-loc-key |
Optional |
- |
|
alertObj.title-loc-args |
array |
APNS setting title-loc-args |
Optional |
- |
|
alertObj.subtitle-loc-key |
String |
APNS setting subtitle-loc-key |
Optional |
- |
|
alertObj.subtitle-loc-args |
array |
APNS setting subtitle-loc-args |
Optional |
- |
|
alertObj.loc-key |
String |
APNS setting loc-key |
Optional |
- |
|
alertObj.loc-args |
array |
APNS setting loc-args |
Optional |
- |
|
alertObj.subtitle |
String |
APNS setting subtitle |
Optional |
- |
|
thread-id |
String |
APNS setting thread-id |
Optional |
- |
|
category |
String |
APNS setting category |
Optional |
- |
|
target-content-id |
String |
APNS setting target-content-id |
Optional |
- |
|
collapseKey |
String |
APNS setting apns-collapse-id |
Optional |
- |
|
silent |
boolean |
APNS setting content-available |
Optional |
false |
|
badge |
Integer |
APNS setting badge |
Optional |
null |
Sets the number to display as the badge of the icon of the application that receives the push notification. If the badge number is 0, the badge is removed from the application icon. If null, the badge is left in its current state. By default, no change is made to the badge. |
sound |
String |
APNS setting sound |
Optional |
no sound is included in the push notification |
Sets the name of the sound file to play when the push notification is received. |
rich |
boolean |
APNS setting mutable-content |
Optional |
false |
Sets whether the receiving device may modify the content of the push notification before displaying it. |
interruption-level |
String |
APNS setting that indicates the importance and delivery timing of a notification |
Optional |
- |
Possible string values "passive", "active", "time-sensitive", or "critical" |
relevance-score |
Double |
APNS setting to sort the notifications from your app |
Optional |
- |
The highest score gets featured in the notification summary |
customFields |
Object |
Specify custom payload values outside the Apple-reserved aps namespace. |
Optional |
- |
Custom values must use the JSON structured and primitive types: dictionary (object), array, string, number, and Boolean |
To learn more about how to create and modify JOLT templates please follow up in our developer documentation: push-templates |