1. 程式人生 > >百度推送iOS

百度推送iOS

 1.首先生成CertificateSigningRequest檔案。

點選鑰匙串訪問-->從證書頒發機構請求證書-->填寫使用者郵件地址-->常用名-->點選儲存-->繼續-->最後點選儲存。

在桌面上就可以看見CertificateSigningRequest.certSigningRequest檔案就是CSR檔案,在我們生成CSR檔案的同時,會在鑰匙串訪問中生成一對祕鑰,名稱為剛才我們填寫的常用名。

2.開啟開發者中心 首先建立Identifiers -->在建立Certificates -->在建立Provisoning Profiles

注意:1.建立Identifiers時,一定要勾選Push Notifications,

2.保證Identifiers中的ID,Certificates中的Name,Provisoning Profiles中的APP ID,應用程式中的Bundle identifier,保持一致。

3.點選鑰匙串訪問-->我的證書-->找到剛剛生成的.p12檔案-->點選匯出到桌面。

4.開啟中端 -->openssl pkcs12 -in push.p12 -out push.pem -nodes,將.p12檔案變成.pem檔案。

5.新增到SDK到?工程中的步驟如下:

將 libBPush.a 和 BPush.h 新增到?自?己的?工程下,新增時需要注意勾選當前Target

6.建立並配置BPushConfig.plist檔案,在工程中建立一個新的Property List檔案,並命名為BPushConfig.plist,新增以下鍵值:

?

1

2

3

4

5

{

“PRODUCTION_MODE” = NO

“API_KEY” = “uZbmgZKhfumvGYGowcjSPFc1” 

“DEBUG” = NO

}

PRODUCTION_MODE:

必選。應用釋出模式。開發證書籤名時,值設為”NO”;釋出證書籤名時,值設為”YES”。請在除錯和釋出應用時,修改正確設定這個值,以免出現推送通知無法到達。

API_KEY:

必選。百度開發者中心為每個app自動分配的api key,在開發者中心app基本資訊中可以檢視。

6.SDK需要以下

庫: Foundation.framework 、 CoreTelephony.framework 、 libz.dylib 、 SystemConfiguration.framework ,請在?工程中新增

7.在 AppDelegate 中的 application: didFinishLaunchingWithOptions: 中調?用 API,初始化Push:

因為iOS8中對於推送有更改,所以要判斷裝置的版本

1

2

[BPush setupChannel:launchOptions];

[BPush setDelegate:self]; //引數物件必須實現onMethod: response:方法,

#ifSUPPORT_IOS8

//    8.0以後使用這種方法來註冊推送通知

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {

UIUserNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:myTypes categories:nil];

[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

}else

#endif

{

UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound;

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];

}

8. 在application: didRegisterForRemoteNotificationsWithDeviceToken:中呼叫API,註冊device token:

BPush registerDeviceToken:deviceToken]; // 必須

[BPush bindChannel]; // 必須。可以在其它時機呼叫,只有在該方法返回(通過onMethod:response:回撥)繫結成功時,app才能接收到Push訊息。一個app繫結成功至少一次即可(如果access token變更請重新繫結)。

9. 實現BPushDelegate協議,必須實現方法onMethod:response:

if([BPushRequestMethod_Bind isEqualToString:method]) 

{

NSDictionary* res = [[NSDictionary alloc] initWithDictionary:data];

NSString *appid = [res valueForKey:BPushRequestAppIdKey];

NSString *userid = [res valueForKey:BPushRequestUserIdKey];

NSString *channelid = [res valueForKey:BPushRequestChannelIdKey];

intreturnCode = [[res valueForKey:BPushRequestErrorCodeKey] intValue];

NSString *requestid = [res valueForKey:BPushRequestRequestIdKey];

}

10.在application: didReceiveRemoteNotification:中呼叫API,處理接收到的Push訊息:

獲取推送後返回的資料

[BPush handleNotification:userInfo]; // 可選