本文檔里的接口,適用于LittlecIm.framework(v1.3.2)版本
1. 制作推送證書(shū)
第 1 步:打開(kāi)??蘋(píng)果開(kāi)發(fā)者網(wǎng)站。

第 2 步:從 Account 進(jìn)入 Certificates, Identifiers & Profiles。

第 3 步:選擇要制作的推送證書(shū)。

● 對(duì)于開(kāi)發(fā)環(huán)境(sandbox)的推送證書(shū),請(qǐng)選擇 Apple Push Notification service SSL (Sandbox)
● 對(duì)于生產(chǎn)環(huán)境(production)的推送證書(shū),請(qǐng)選擇 Apple Push Notification service SSL (Production)
第 4 步:選擇對(duì)應(yīng)的 APP ID(小溪示例使用 ChatAppDemo,所以此處APP ID選擇 com.cmcchy.xiaoxiApp)。

第 5 步:打開(kāi)鑰匙串訪問(wèn) → 證書(shū)助理 → 從證書(shū)頒發(fā)機(jī)構(gòu)請(qǐng)求證書(shū),根據(jù) Certificate Assistant 的提示,創(chuàng)建 Certificate Request。

第 6 步:上傳上一步中創(chuàng)建的 Certificate Request 文件。

第 7 步:上傳完畢后,推送證書(shū)就被正確生成了,之后我們下載下來(lái)這個(gè)證書(shū),并雙擊導(dǎo)入系統(tǒng)。

2. 上傳推送證書(shū)
第 1 步:打開(kāi)鑰匙串訪問(wèn) → Certificates,我們會(huì)看到有剛剛我們制作好的推送證書(shū)。

導(dǎo)出并保存為 P12 格式并設(shè)置密碼。
第 2 步:登錄??小溪管理后臺(tái)。

第 3 步:輸入了正確的賬號(hào)后,選擇對(duì)應(yīng)的 APP(小溪示例使用 ChatAppDemo,選擇相應(yīng)環(huán)境(沙箱/線上)后點(diǎn)擊“管理”)。

第 4 步:同時(shí)上傳開(kāi)發(fā)環(huán)境證書(shū)和生產(chǎn)環(huán)境證書(shū)。(上傳之前導(dǎo)出的 P12 文件,密碼則為此 P12 文件的密碼)

● 注意:請(qǐng)正確上傳相應(yīng)環(huán)境對(duì)應(yīng)的證書(shū)(創(chuàng)建的是 Apple Push Notification service SSL Sandbox 為開(kāi)發(fā)環(huán)境;Apple Push Notification service SSL Production 為生產(chǎn)環(huán)境)。
3 調(diào)用小溪APNS推送接口
推送模塊接口屬于CMIMPushNotification類,共提供3個(gè)接口供開(kāi)發(fā)者調(diào)用,分別為:傳入deviceToken,訂閱消息推送,取消消息推送。
3.1 傳入deviceToken
調(diào)用此接口向服務(wù)器傳入deviceToken。
/**
* @brief 配置推送需要的設(shè)備token
*
* @param deviceToken 在application的代理方法里獲取到
*/
- (void)configWithDeviceToken:(NSData*)deviceToken;
◆ 首先需要注冊(cè)離線推送:
//iOS8 注冊(cè)APNS
if ([application respondsToSelector:@selector(registerForRemoteNotifications)])
{
[application registerForRemoteNotifications];
UIUserNotificationType notificationTypes = UIUserNotificationTypeBadge |
UIUserNotificationTypeSound |
UIUserNotificationTypeAlert;
UIUserNotificationSettings *settings = [UIUserNotificationSettings
settingsForTypes:notificationTypes categories:nil];
[application registerUserNotificationSettings:settings];
}
else
{
UIRemoteNotificationType notificationTypes = UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:notificationTypes];
}
◆ 注冊(cè)了推送功能,iOS 才會(huì)自動(dòng)回調(diào)以下方法,得到 deviceToken,您需要將 deviceToken 傳給 SDK。
// 將得到的deviceToken傳給SDK
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:
(NSData *)deviceToken
{
//獲取終端設(shè)備標(biāo)識(shí),服務(wù)器端推送消息到APNS時(shí)需要知道終端的標(biāo)識(shí),APNS通過(guò)注冊(cè)的終端標(biāo)識(shí)找到終端設(shè)備
[[CMIMPushNotification defaultManager]configWithDeviceToken:deviceToken];
}
// 注冊(cè)deviceToken失敗
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:
(NSError *)error
{
NSLog(@"error -- %@",error);
}
● APNS 注冊(cè)失敗,一般是由于使用了通用證書(shū)或者是模擬器調(diào)試導(dǎo)致,請(qǐng)檢查證書(shū)并用真機(jī)調(diào)試。此處是 iOS 系統(tǒng)報(bào)的錯(cuò),
如仍不能確定,請(qǐng)從網(wǎng)上查找相關(guān)資料。
3.2 訂閱消息推送
調(diào)用此接口向服務(wù)器訂閱消息推送。
/**
* 訂閱推送
*
* @param bProductCrtType 推送證書(shū)類型: YES為product證書(shū)類型(發(fā)布用), NO為develop證書(shū)類型(開(kāi)發(fā)調(diào)試用)
* @param subscribeSucessful 訂閱成功回調(diào)
* @param subscribeFail 訂閱失敗回調(diào)
*/
- (void)subscribePushNotification:(BOOL)bProductCrtType
subscribeSuccessful:(subscribeSucessful)subscribeSucessful
subscribeFail:(subscribeFail)subscribeFail;
調(diào)用示例(一般在登錄成功后調(diào)用):
//訂閱推送通知
[[CMIMPushNotification defaultManager] subscribePushNotification:YES subscribeSuccessful:^{
NSLog(@"subscribePushNotification successful!);
} subscribeFail:^(NSString *error) {
NSLog(@"subscribePushNotification error:%@",error);
}];
3.3 取消消息推送
調(diào)用此接口向服務(wù)器取消消息推送。
/**
* 取消消息推送
*/
- (void)cancelPushNotification;
調(diào)用示例(一般在賬號(hào)退出后調(diào)用):
[[CMIMPushNotification defaultManager] cancelPushNotification];