Skip to content

GetSocial Notifications on iOS

Prerequisite

Setup iOS Push Notifications

Generate Push Notification Certificate

To enable push notifications in your iOS application, go to “Capabilities” tab in your target configuration in XCode and enable “Push Notification”.

On Apple Developer Portal:

  1. Open Apple Developer Portal;

  2. Log into your account;

  3. Open “Certificates, Identifiers & Profiles”;

  4. Find “App IDs” in “Identifiers” section and find your application;

  5. Click “Edit” and scroll to “Push Notifications” configurations;

  6. Click “Create Certificate…” for Development and Production.

  7. Follow the instructions how to create the certificate and download it.

In your .entitlements file you should enter “development” or “production” value for “APS Environment” key, for Development and Production builds respectively.

Export Server .p12 Certificate

Double click on downloaded .cer file (your certificate), it will add it to your Keychain Access and open. Click on “Certificates” section, find your certification, and export it with clicking “Export Apple Development/Production iOS Push Services”, create a password for your certificate and save it somewhere on the disk.

Do it for both Production and Development certificates.

Configure Push Notification on the Dashboard

  1. Login to the GetSocial Dashboard.
  2. Go to the “App settings” section → “Notifications” tab.
  3. Enable iOS notifications by clicking on the switch and upload .p12 certificates from the previous section.
  4. Select what kind of notifications users will receive:

    GetSocial Dashboard - Notifications Type

  5. Select “Sandbox” if your application using development PN, or “Production” for development.

  6. Press “Save” button in the bottom right corner.

  7. Check notifications texts and translations.

    GetSocial Dashboard - Check Notification Text

  8. Check setup sending a test notification to your test device.

    GetSocial Dashboard - Send Test Notification

Warning

Be careful with the configuration of your APS Environment, if you are using “development”, you need to sign your application with Development provisioning and choose “Sandbox” in “Enable Certificate” on GetSocial Dashboard notification configurations.

Enable/disable GetSocial Notifications on the Client Side

By default GetSocial SDK automatically register at push server, and the user will start receiving push notifications.

To prevent auto registration and register for push notifications manually:

  1. Add autoregister-push parameter to getsocial.sh in Build Phases section:

    1
    getsocial.sh --app-id=[GetSocial App Id] --autoregister-push=false
    
  2. To start receiving GetSocial push notifications call:

    1
    [GetSocial registerForPushNotifications];
    

To enable push notifications, just remove the autoregister-push parameter from getsocial.sh or set its value to true.

If you’re not using GetSocial iOS Installer Script check how to disable auto registration for push notifications in the Manual Integration Guide.

Handle Click on Push Notifications

GetSocial UI

If you are using GetSocial UI, our respective view will be opened on click on push notifications: if someone liked your activity or commented under your activity, this activity will be shown on application start.

Important

If GetSocial View is opened automatically by GetSocial UI, you can not set the custom title, UiActionHandler, action button handler, etc. In this case, we recommend you to override the default behavior and open GetSocial View by yourself.

Notification Handler

To handle notification click in your code, we provide GetSocialNotificationHandler, you can set it in application:didFinishLaunchingWithOptions: method of your AppDelegate:

1
2
3
4
5
6
7
[GetSocial setNotificationHandler:^BOOL(GetSocialNotification *notification, BOOL wasClicked) {
    if (!wasClicked) {
        return NO;
    }
    BOOL isHandled = [self processNotification:notification];
    return isHandled;
}];

wasClicked parameter is true when the application was opened by push notification click or false if the application was in the foreground when the notification was received.
You return a BOOL: YES, if notification is handled by your own, or NO if not, so it will be handled by our library.
For example, if you want to prevent of showing GetSocial Activity Feed UI on notification click:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
- (BOOL) processNotification: (GetSocialNotification *)notification {
    switch (notification.action) {
        case GetSocialNotificationActionOpenActivity: {
            // add custom logic here
            NSLog(@"Activity action received");
            return YES;
        }
        default:
            return NO;
    }
}

In this case, you’re showing something you would want to show about the activity, and GetSocial UI will not be shown.

Tip

If you are not using GetSocial UI, we recommend to handle notifications by yourself - better user experience would be to react to notification actions.

Show Notifications In Foreground

If you want to show GetSocial notifications while app is in foreground, follow next:

  1. In your Xcode project, go to: Build TargetBuild Phases.

  2. Find Run Script section with getsocial.sh configured.

  3. Add --foreground-notifications flag

    1
    getsocial.sh --app-id=[GetSocial App Id] --foreground-notifications=true
    

If --foreground-notifications is set to true:

  • Notifications will be shown in the system notification center when your application is in foreground.
  • NotificationHandler will be called after clicking on the notification; parameter wasClicked will be YES.

iOS 9 and lower

--foreground-notifications works on iOS 10+ only, on the older version of iOS the notification will be delegated to the NotificationHandler.

If you’re not using GetSocial iOS Installer Script check how to enable foreground notifications in the Manual Integration Guide.

Get Notifications

To be sure your users didn’t miss any important(or not) notifications, you can query GetSocial notifications and show it to your user inside the app. Or send it once again as local notification. Or handle it in any other convenience method.

Query

You have two types of queries: GetSocialNotificationQuery and GetSocialNotificationsCountQuery to get notifications list and notifications count respectively.

GetSocialNotification can differ by a read status - be read or unread. Also each notification has type, it is one of GetSocialNotificationType constants.

To query notifications by a read status, use one of static factory methods read, unread or readAndUnread.

By default notifications of all types are queries. Also you can explicitly call ofAllTypes to be sure that all types are queries. To specify a list of types you’re interested in call method ofTypes:(NSArray<NSNumber *> *)types and pass one or few types you want to query. You should wrap a constants with shorthand @(GetSocialNotificationTypeComment) or [NSNumber numberWithInteger:GetSocialNotificationTypeComment].

Notifications Count

To get the count of notifications use [GetSocialUser notificationsCountWithQuery:query success:success failure:failure] method. For example, to get a number of all unread notifications for current user:

1
2
3
4
5
6
GetSocialNotificationsCountQuery *query = [GetSocialNotificationsCountQuery unread];
[GetSocialUser notificationsCountWithQuery:query success:^(int count) {
    NSLog(@"Notifications count is %d", count);
} failure:^(NSError *error) {
    NSLog(@"Failed to get notifications count, %@", error);
}];

Notifications List

Similar to notifications count you can fetch a list of notifications using GetSocial.User.getNotifications(query, callback) mehtod:

1
2
3
4
5
6
GetSocialNotificationsQuery *query = [GetSocialNotificationsQuery unread];
[GetSocialUser notificationsWithQuery:query success:^(NSArray<GetSocialNotification *> *notifications) {
    [self showNotifications:notifications];
} failure:^(NSError *error) {
    NSLog(@"Failed to get notifications count, %@", error);
}];

Read And Unread Notifications

All the notifications that are sent to a user are unread. The only exception is notifications that was clicked by a user - such becomes read automatically.

If you want to set notification read or unread use [GetSocialUser setNotificationsRead:notificationIds read:isRead success:success failure:failure] method:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
NSArray<GetSocialNotification *> *notificationsToBeRead = ...;
NSMutableArray<NSString *> *notificationIds = [NSMutableArray new];
for (GetSocialNotification *notification in notificationsToBeRead) {
    [notificationIds addObject:notification.notificationId];
}
BOOL markAsRead = YES;
[GetSocialUser setNotificationsRead:notificationIds read:markAsRead success:^() {
    NSLog(@"Successfully changed notifications status");
} failure:^(NSError *error) {
    NSLog(@"Failed to change notifications status, %@", error);
}];

You can mark just one notification using @[notification.notificationId].

Disable Push Notifications For User

If you don’t want to send notifications to a user, use [GetSocialUser setPushNotificationsEnabled:NO success:success failure:failure]. Notifications will still appear in the notification center. To enable it back use [GetSocialUser setPushNotificationsEnabled:YES success:success failure:failure].

To check current setting value use [GetSocialUser isPushNotificationsEnabledWithSuccess:success failure:failure].

Next Steps

Give us your feedback! Was this article helpful?

😀 🙁