APNS(2)Try to Finish the first Example

APNS(2)Try to Finish the first Example



Brief Overview


1. An app enables push notifications.

2. The app receives a "device token".

3. The app sends the device token to your server

4. The server sends a push notification to the Apple Push Notification Service

5. APNS sends the push notification to the user's device.



After the user's device receives the push notification, it shows an alert, plays a sound and/or updates the app's icon.



Need for Push Notifications
An iPhone or iPad

An iOS Developer Program membership

A VPS(Virtual Private Server)



Anatomy of a Push Notification
{

     "aps":

     {

          "alert": "Hello, world!",

          "sound": "default"

     }

}



{

     "aps":

     {

          "alert":

          {

               "action-loc-key": "Open",

               "body": "Hello, world!"

          },

          "badge": 2

     }

}



Push Notification Gotchas
They are not reliable. There is no guarantee. Push notifications are fire-and-forget, there is no way to find out what the status of a notification is. APNS will try to deliver the last notification after the device is back online, but once it times out, the push notification will be lost forever.



Provisioning Profile and Certificates
We need an SSL certificate.



Generating the Certificate Signing Request(CSR)
Use 'Command' + 'Blank' to find the Keychain Access application on my MAC book.

'Certificate Assistant' and choose 'Request a Certificate from a Certificate Authority…'



Enter my email which I register on the iOS developer. And give a 'Easy iOS sample' for common name and select the 'Save to disk'.



Save the file on the desktop as easyiossample.certSigningRequest.



Select 'login' on the top and 'Keys' at the left bottom, we will see the private and public key we just created. Select the private key and export to desktop with name EasyiOSSampleKey.p12 and use a password to protect it.



Making the App ID and SSL certificate
Go to this URL

https://developer.apple.com/ios/manage/overview/index.action



'App IDs' ---> 'New App ID'

Description: EasyiOSExample

Bundle Seed ID:

Bundle Identifier:



click on "Configure"



check the Enable for Apple Push Notification service box and click on the 'Configure' button for the Development Push SSL Certificate.



continue to find the Certificate Signing Request(CSR).  ----> Generate -----> Done



click Download to get the certificate. It is named aps_development.cer.



Making a PEM file
Till now, I have 3 files:

The CSR

The private key as a p12 file

The SSL certificate, pas_developer.cer



I will combine the certificate and the private key into a single file that uses the PEM format.



>openssl x509 -in aps_development.cer -inform der -out easyiossample_cert.pem

>openssl pkcs12 -nocerts -out easyiossample_key.pem -in EasyiOSSampleKey.p12

Enter Import Password:

MAC verified OK

Enter PEM pass phrase:

Verifying - Enter PEM pass phrase:



First password is for open the private key. Other 2 passwords are creating the protection for PEM file.



Put the 2 PEM files together

>cat easyiossample_cert.pem easyiossample_key.pem > ck.pem



I verify the certificate and key like this>

>telnet gateway.sandbox.push.apple.com 2195



>openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert easyiossample_cert.pem -key easyiossample_key.pem



But I got this error, Error Message:

Verify return code: 20 (unable to get local issuer certificate)



I will find out if this is a problem and solve it later.



Making the Provisioning Profile
Select the 'Provisioning' Menu. -----> New Profile

Profile Name: EasyiOSSample Development

certificates:

App ID:

Devices:



Before do that, I need to 'Certificates' --- Upload my CSR.



Go to the 'Devices' and active my devices.



We are creating provisioning profile, because each push app needs to have its own profile that is connected to the proper App ID.



After finish that, we can download and get a file named Easy iOS Sample.mobileprovision.



All these accounts things are done, I will go on to write the sample client.



References:
http://w54653520.iteye.com/blog/1319595



http://code.google.com/p/javapns/

http://www.ibm.com/developerworks/cn/mobile/mo-ios-push/

http://hz-chenwenbiao-rr.iteye.com/blog/1604589



http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

http://www.raywenderlich.com/3525/apple-push-notification-services-tutorial-part-2

http://www.raywenderlich.com/tutorials

你可能感兴趣的:(example)