iOS Push Notification

Push Notification helps you in sending event or alert to your app users even when they are not logged into app. App42 uses APNS (Apple Push Notification Service) to send Push Notification on iOS devices. To configure Push Notifications for iOS Apps/Games, the prerequisites are :

bullet An iOS Developer Program membership on iOS Dev Center

bullet An iPhone/iPad.

bullet A Server, and this is where App42 Push Service comes into the picture.

Once you have all, you need to generate AppID and SSL certificate on iOS Developer portal, .p12 file and a provisioning profile configured for push notification. This guide will walk you through all the necessary steps needed to configure your app for push notification.

1. Generating Certificate Signing Request

To manually generate the certificate, Certificate Signing Request (CSR) file is needed from your MAC that will be used to authenticate the creation of SSL certificate. To create CSR file, please follow the steps mentioned below:

bullet Open Keychain Access(Applications->Utilities->Keychain Access)

bullet Choose the menu option “Keychain Access -> Certificate Assistant -> Request a Certificate From a Certificate Authority…” and make sure no private key is selected in the main Keychain Access window.

RequestCSR

bullet Enter your Email Address and Common Name and check Saved to disk and click Continue to save it to your prefered location.

CertficateAssistant

2. Creating App ID

To install an application on your device, you need to create an App ID and you do this on iOS Dev Center .

bullet Login and select Certificates, Identifiers & Profiles .

DeveloperResource

bullet Select Identifiers in the presented screen :

Identifiers

bullet Click on the + button at the upper right corner of the presented screen:

AppIds

bullet Enter the name for new AppID under App ID Description.

bullet Select App ID Prefix.

bullet Select Explicit App ID option under App ID Suffix and enter the Bundle ID.

AppIDDescription

bullet Enable Push Notification for this App ID by selecting the checkbox next to Push Notifications under App Services.

bullet Select Continue and Confirm all the details are correct in the presented screen such as App ID description, Bundle Identifier and Push Notifications Checkbox and Select Submit button to finish the App ID creation.

AppServices

3. Creating SSL Certificate

Now we will generate SSL certificate that is needed to make a secure connection between the App42 Push Server and APNS. This certificate will be linked to the App ID you just created so that the App42 Server will send push notifications to this particular app only.

bullet Select App IDs under Identifiers that shows list of app ids and select your newly created App ID i.e. App42PushApp.

AppIDSelection

bullet Select Edit button in the presented screen.

EditAppID

bullet Scroll down to Push Notifications to create SSL certificate.

bullet Select Create Certificate under Development SSL Certificate as we are creating for development environment.

CreateCertificate

bullet Next you will be guided to Add iOS Certificate screen where you will be asked to create Certificate Signing Request(CSR) that we have created already under Section-1 and hence Select Continue.

AddiOSCertificate

bullet Next you will be asked to upload the CSR file. Select the Choose File and browse to .certSigningRequest file and Click Open then Click Generate to generate the SSL certificate.

UploadCSR

bullet It may take few seconds to generate the certificate. Once generated, click Download to download the certificate. I recommend to store all the generated files in the single folder as it will be easy to locate the files later.

DownloadCertificate

Now you have a valid certificate for sending push notification in development environment, If you need this for Production environment, repeat the same process for the Production.

4. Creating .p12 file:

bullet Now locate the SSL certificate file that you just downloaded and double click to install it to your Keychain Access.

bullet Now Open Keychain Access -> My Certificates(Under Category section)and Right Click on the certificate you just installed and choose Export.

ExportCertificate

bullet Enter the filename and select the location to save and click Save.

p12

bullet Enter the export Password when asked. You may be asked to enter your system account password to allow Keychain Access to export the certificate from your Keychain.

bullet Make your .p12 file compatible with APP42 server by following the below mentioned steps:

a. Keep your .cer file and .p12 file in a single folder

b. Open terminal and go to the folder that has both the files $ cd “your folder path”

c. Now execute the following commands in the terminal :


openssl x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM
openssl pkcs12 -nocerts -in App42PushDevKey.p12 -out App42PushDevKey.pem
openssl pkcs12 -export -inkey App42PushDevKey.pem -in developer_identity.pem -out iphone_dev.p12

Where, aps_development.cer <= SSL Certificate you downloaded from Apple in Step 3 and App42PushDevKey.p12 <= The .p12 file you just created above.

5. Generating the Provisioning Profile

Go to iOS Dev Center and select Certificates, Identifiers & Profiles . Select Provisioning Profile option from the sidebar and select + button.

ProvisionalProfile

Now you have to follow a 4-step Add iOS Provisioning Profile wizard

Step-1 : Select Type

Select iOS App Development under Development and then click Continue.

ProfileTypeSelection

Step-2 : Configure

Select the App ID you created earlier in section-2 of this tutorial for me it is “App42PushApp” and click Continue.

ProvisionAppID

Step-2.1 Select Certificates :

Select the certificates from the list provided to include in this provisional profile and click Continue.

SelectCertificate

Step-2.2 Select Devices :

Select the devices you wish to include in this provisioning profile and click Continue.

SelectDevices

Step-3 : Generate

Enter a meaningful name for this provisioning profile in field Profile Name.This will be used to identify the profile in the portal. Now click Generate.

GenerateProfile

Step-4 : Download

Select Download to download the generated profile. Add the profile to Xcode by double clicking on it and You are done.

DownloadProfile

Note:- Repeat the process to generate the Ad Hoc / App Store profile, the only difference is, select the Select Type as Ad Hoc / App Store instead of Development in the Step-1.

6. Configuring your App42 Cloud API App for Push Notification

To send Push Notification using App42 Cloud API, you have to upload the iphone_dev.p12 file, that you created in step-4, to AppHQ Console.

bullet Register with App42 platform

bullet Create an app once you are on Quick-start page after registration.

bullet If you are already registered, login to AppHQ console , create an app from App Manager -> App Create link and select Push Notification in AppHQ Menu.

bullet Select iOS settings in Settings.

bullet Select your App Name from the drop down menu.

bullet Browse your iphone_dev.p12 file by clicking ‘choose file’ option to upload the file.

bullet Enter password given during creation of the iphone_dev.p12 file.

bullet Select the development environment from the drop down menu.

bullet Click on the submit button and it’s done here.

UploadP12

Repeat the same process to configure App42 Cloud API App for Push when it is ready for distribution, except selecting production environment for Environment option from the drop down menu.

Note:- Environment drop-down menu has two options development and production. You can upload two .p12 files one for each environment. But we recommend to have only one active push profile at a time.

MultipleP12

7. Setting Object Inpector in Your RAD Studio Project

In the Object Inspector, set the following properties of the App42Provider:

bullet Expand the Android Push node and copy to GCMAppID the Project Number from above step.

bullet Set UserName for the user

bullet On the form, select PushEvent1 and go to the Object Inspector.

bullet Check whether the Provider property is set to App42Provider1

bullet Switch to Code tab by pressing F12.

bullet Define the event handlers as follows:

implementation
procedure TForm1.PushEvents1DeviceRegistered(Sender: TObject);
begin
  Memo1.Lines.Add('Device Registered');
  Memo1.Lines.Add('');
end;
procedure TForm1.PushEvents1DeviceTokenReceived(Sender: TObject);
begin
  Memo1.Lines.Add('Device Token Received');
  Memo1.Lines.Add('');
end;
procedure TForm1.PushEvents1DeviceTokenRequestFailed(Sender: TObject;
  const AErrorMessage: string);
begin
  Memo1.Lines.Add('Device Token Request Failed');
  Memo1.Lines.Add(AErrorMessage);
  Memo1.Lines.Add('');
end;
procedure TForm1.PushEvents1PushReceived(Sender: TObject;
  const AData: TPushData);
begin
  Memo1.Lines.Add('Device push received');
  Memo1.Lines.Add(AData.Message);
  Memo1.Lines.Add('');
end;
end.

8. OpenSSL Settings

Your application will need OpenSSL support in order to make HTTPS requests. On platforms that do not include OpenSSL libraries, such as iOS, you will need to download OpenSSL libraries. For iOS devices you need to download the libcrypto.a and libssl.a static libraries. The location of downloaded libraries is important. For static libraries, the files need to be in the linker library path or in the project directory.

OpenSSL

Project Settings

bullet Right-click your project in the Project Manager. Choose Project > Options > Entitlement List, and select Receive Push Notification in iOS.

bullet Choose Project > Options > Version Info, and set the CFBundleIdentifier key. This should be the same as the identifier of your App ID.

Project

9. Running Your Application on a Mobile Device

Now your application is ready to run on either a simulator or your connected mobile device. To run your application

bullet In Project Manager, select your target platform.

bullet Choose either of the following commands: Run > Run /(OR) Run > Run Without Debugging

bullet Click the Active checkbox.

Sending Push Notification:

The push notification can be sent from the AppHQ console.

  • Sending Push from AppHQ Console:

To send Push messages from AppHQ Console, Login to AppHQ Console and select Users under Push Notification in AppHQ Menu.

bullet Select your App42 App name from drop down menu under Users section.

bullet Select the user name to whom you want to send Push message.

bullet Click Send Push.

SendPushFromAppHQ

bullet Type your message in the Message section in the Send Push window and Click Send and you are done.

TypeMessage

bullet For the detail delivery reports you can see the Push Logs by selecting Push Logs option from the left-side menu and then the respective App42 App from the drop down under Push Logs.

PushLogs

bullet You can also send push messages to All your users by selecting Send Push To All instead of Send Push.