Apple Push Notification Server (APNS) is a central server where all the IOS iOS devices are connected at any given time. If you wish to send a push message to an application, then this message is sent to APNS and APNS forwards this message to the related device. In order to send the message to the target device and application, a token is generated for each device-application pair and this token is sent to APNS together along with the related message.
Related Marketing Cloud expects You need to send the following information to RMC for APNS communication from you:
APNS works in two modes, Sandbox and Production.:Sand box
...
...
...
After you imported the SDK into your project by adding the related files, you can integrate the SDK to your project using the following steps:For .
The following method should be used for registering the application into the APNS system, the following method should be used:
Code Block | ||||
---|---|---|---|---|
| ||||
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)]; |
For IOS 8 and later, the The following code should be used for iOS 8 and later versions:
Code Block | ||||
---|---|---|---|---|
| ||||
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; |
After that point, the user has to accept to receive push messages. If the user accepts and the device is successfully registered to the APNS, the following method is called in AppDelegate:
Code Block | ||||
---|---|---|---|---|
| ||||
- (void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken"); [[EuroManager sharedManager:@"AppcentIOSTest1"] registerToken:deviceToken]; } |
In the
Status | ||||||
---|---|---|---|---|---|---|
|
method, deviceToken variable is the generated token by APNS. After receiving this token, registerToken method is called in EuroManager. This token value must be recorded to the EuroMessage RMC system in order to sent send messages. In the example, Status | ||||||||
---|---|---|---|---|---|---|---|---|
|
If device takes an error during recording, the The following metod method informs you the type of error If the device takes an error during recording:
Code Block | ||||
---|---|---|---|---|
| ||||
- (void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { NSLog(@"Registration failed : %@",error.description); } |
EuroManager instance is activated as shown below:
Code Block | ||||
---|---|---|---|---|
| ||||
EuroManager *euroInstance = [EuroManager sharedManager:@"AppcentIOSTest1"]; [euroInstance setDebug:YES]; |
If the additional parameters of the user are known, they can be added as follows;shown below:
Code Block | ||||
---|---|---|---|---|
| ||||
euroInstance.userEmail = @"uysalmo@gmail.com"; [euroInstance setTwitterId:@"com90"]; [euroInstance setFacebookId:@"com90"]; [euroInstance setUserLatitude:41.11 andLongitude:29.12]; [euroInstance setAppVersion:@"1.0"]; [euroInstance setUserKey:@"ozanUysalKey"]; |
In any step, if you add a new parameter and want to send it to EuroMsg the RMC server, you should call synchronize the synchronize method.:
Code Block | ||||
---|---|---|---|---|
| ||||
[[EuroManager sharedManager:@"AppcentIOSTest1"] synchronize]; |
Code Block | ||||
---|---|---|---|---|
| ||||
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { NSLog(@"didReceiveRemoteNotification : %@",userInfo); [[EuroManager sharedManager:@"AppcentIOSTest1"] handlePush:userInfo]; } |
If you use a IOS are using iOS 8 or later version, the following method should be called.
language | applescript |
---|---|
linenumbers | true |
:
fetchCompletionHandler : %@",userInfo); [[EuroManager sharedManager:@"AppcentIOSTest1"] handlePush:userInfo completionHandler:completionHandler]; }If you use Visilabs in your application and wish to report the push messages to Visilabs, you can use reportVisilabs: method. reportVisilabs: method expects an URL produced by Visilabs SDK and is used as below:
Code Block | ||||
---|---|---|---|---|
| ||||
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
NSLog(@"didReceiveRemoteNotification:fetchCompletionHandler : %@",userInfo);
Visilabs *visi = [Visilabs ...]
NSString *pushUrl = [visi getPushURL:@"src" withCampaign:@"cam" withMedium:@"med" withContent:@"con"];
[[EuroManager sharedManager:@"AppcentIOSTest1"] reportVisilabs:pushUrl];
[[EuroManager sharedManager:@"AppcentIOSTest1"] handlePush:userInfo completionHandler:completionHandler];
} |
When an interactive push is sent, the information of which button is clicked by the user should be transmitted to
EuroMsg sideRMC. For this application:
method in the Status subtle true colour Red title handleActionWithIdentifier:forRemoteNotification:completionHandler: Status subtle true colour Red title AppDelegate
is called as shown below:
Code Block | ||||
---|---|---|---|---|
| ||||
- (void) application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler { NSLog(@"push clicked : %@ %@",userInfo,identifier); [[EuroManager sharedManager:@"AppcentIOSTest1"] handleInteractiveAction:identifier userInfo:userInfo]; if(completionHandler != nil) { completionHandler(UIBackgroundFetchResultNewData); } } |
Variables in the Message class:
Variable | Description |
---|---|
messageContent | Message |
URL | An optional URL |
params | Custom parameters |
pushType | Push Type |
altURL | Alternate URL |
mediaUrl | Image and Video content URL |
cId | Campaign id |
sound | Sound name |
Code Block | ||||
---|---|---|---|---|
| ||||
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
NSLog(@"didReceiveRemoteNotification:fetchCompletionHandler : %@",userInfo);
Visilabs *visi = [Visilabs ...]
NSString *pushUrl = [visi getPushURL:@"src" withCampaign:@"cam" withMedium:@"med" withContent:@"con"];
[[EuroManager sharedManager:@"AppcentIOSTest1"] reportVisilabs:pushUrl];
[[EuroManager sharedManager:@"AppcentIOSTest1"] handlePush:userInfo completionHandler:completionHandler];
} |