Skip to content

Setup Push 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 Notifications section → Settings 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 is using development PN, or Production for development.

  6. Send a test notification to your test device to check your setup.

    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.

Autoregister for Push Notification 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:

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

    ```objc tab=”Objective-C”
    [GetSocial registerForPushNotifications];

    ```swift tab="Swift"
    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 push notification click in your code, we provide GetSocialNotificationHandler, you can set it in application:didFinishLaunchingWithOptions: method of your AppDelegate:

```objc tab=”Objective-C”
[GetSocial setNotificationHandler:^BOOL(GetSocialNotification *notification, BOOL wasClicked) {
if (!wasClicked) {
return NO;
}
BOOL isHandled = [self handleAction:notification.notificationAction];
return isHandled;
}];

```swift tab="Swift"
GetSocial.setNotificationHandler { (notification : GetSocialNotification, wasClicked : Bool) -> Bool in
    if !wasClicked {
        return false
    }
    let isHandled: Bool = self.handleAction(notification.notificationAction)
    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.

Read how to handle actions.

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 Push Notifications In Foreground

If you want to show GetSocial push 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

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

If --foreground-notifications is set to true:

  • Push 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.

Rich Push Notifications & Badges

Beginning with iOS 10 push notifications can contain media elements, like images and videos.
To support this feature, you need to add a Notification Extension target to your app, as described here:

  1. In Xcode Select FileNewTarget…
  2. Select Notification Service Extension.
  3. Enter Product Name and other information.
  4. Make sure extension and application have the same target iOS version.
  5. Select your application target in Embed in application line.
  6. Click on Finish to create extension.
  7. Download GetSocialExtension.framework, unzip and add it to your extension’s Frameworks and Libraries section.

    Xcode - Add Extension Framework To Extension Target

  8. Add GetSocialExtension.framework to your application’s Embed Frameworks section.

    Xcode - Add Extension Framework To Application Target

  9. (For badge support) Add App Group for both application and extension target:

    1. Go to Signing & Capabilities.
    2. Add App Groups capability.
    3. In App Groups section press + and add group with name group.YOUR_BUNDLE_ID.getsocial_extension, where replace YOUR_BUNDLE_ID with actual bundle identifier of your app, it should be something like com.example.app. Group name should be the same for both application and extension targets.
    4. Don’t forget to add it for both application and extension targets, otherwise badge won’t be properly updated.

Basic setup is now done, let’s write some code.
Replace the content of your *.m file in your extension with the one you can download from GitHub.

Congratulations, you’re ready to show rich notifications to your users!

To check if your setup is correct, follow the Testing Guide.
The test notification contains a default image, which should be displayed in the received notification. Badge on your application icon should be increased by 1. After you open your application, badge should be cleared.

Important

Notification Service Extension will require a Provisioning Profile.

Disable Push Notifications For User

If you wan to disable push notification for the user, use [GetSocialUser setPushNotificationsEnabled:NO success:success failure:failure]. When push notifications are disabled, you still can query for GetSocial Notifications via data API.

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?

😀 🙁