iOS推送證書設置指南

創(chuàng)建App ID

點擊Certificates, IDs & Profiles圖標
  • 在證書管理界面創(chuàng)建相應的APPID,Bundle ID與項目對應即可
選擇APPIDs選項
  • 創(chuàng)建 App ID,如果已經自動創(chuàng)建好了可以跳過這一步驟
點擊 ?
創(chuàng)建App ID,Bundle ID與項目對應即可
  • 在創(chuàng)建App ID 的時候在App Services內勾選Push Notifications功能,申請推送權限


    勾選Push Notifications

到這里App ID已經創(chuàng)建完畢


配置和下載證書

  • 選擇證書管理界面 點擊 ? 創(chuàng)建一個新的證書


    Snip20170305_9.png
  • 我們直接選擇創(chuàng)建一個測試證書

創(chuàng)建一個測試證書
  • 選擇你剛剛的創(chuàng)建的App ID
選擇配置的App ID
  • 按照提示導出簽名證書并上傳
簽名證書
  • 進入系統(tǒng)自帶的鑰匙串訪問應用,點擊 鑰匙串訪問 ->證書助理->從證書頒發(fā)機構請求證書

    請求證書

  • 填寫相關信息,并且選擇保存到本地磁盤

保存到磁盤
  • 回到將剛剛請求完的證書上傳至剛剛的頁面
選擇.certSigningRequest上傳
  • 點擊download 獲取 aps.cer證書文件
獲取 aps.cer
  • 雙擊aps.cer文件,會自動打開鑰匙串程序
雙擊aps.cer文件
  • 鼠標右擊,點擊導出p12證書
導出p12證書
  • 自定義一個密碼用來保護p12證書
設定密碼

到此推送的p12證書已經創(chuàng)建完畢了,可將該證書上傳至服務器


Provisioning Profile的創(chuàng)建

  • 創(chuàng)建Provisioning Profile的前提是已經創(chuàng)建了待發(fā)布應用所使用的Bundle ID的App ID,而且為該App ID創(chuàng)建了APNs證書,也就是完成了我上面敘述的幾個步驟,這個時候我們就可以來創(chuàng)建Provisioning Profile了。

  • 選擇Provisioning Profile,點擊 ? 進行創(chuàng)建

Snip20170305_29.png
  • 這個地方紅框中框出的選項依次代表
  1. 開發(fā)測試環(huán)境
  1. 上傳到appstore的生產環(huán)境(如果是企業(yè)證書這里會是In House)
  2. 用于內部測試的生產環(huán)境
這里我們選擇測試環(huán)境
  • 選擇對應的App ID
選擇對應的App ID
  • 選擇所屬的開發(fā)者證書


    選擇所屬的開發(fā)者證書
  • 為該Provisioning Profile選擇將要安裝的設備


    選擇將要安裝的設備
  • 給該Provisioning Profile填寫名稱


    填寫名稱
  • 創(chuàng)建完成點擊下載


    創(chuàng)建完成
  • 線上環(huán)境的創(chuàng)建方式相同,你可以在填寫名稱時表明時測試環(huán)境還是先上環(huán)境


Xcode配置

  • 雙擊下載下來的Provisioning Profile,可以添加到xcode

  • 點擊項目,選擇目標TARGETS后進入Build Setting 界面,搜索“Code signing”,加載創(chuàng)建Provisioning Profile時指定的開發(fā)者證書

指定開發(fā)者證書
  • 導入對應的Provisioning Profile** debug導入沙盒環(huán)境的Provisioning Profile,release導入生產環(huán)境的Provisioning Profile**
導入Provisioning Profile
  • 在 xcode Capabilities 開啟推送功能
Capabilities 開啟推送

接入云信apns推送

  • 完成相應證書配置

  • 登陸云信后臺 云信后臺,進入證書管理界面

進入云信證書管理
  • 在標識管理中填入自己應用的 Bundle ID
Bundle ID填寫
  • 將導出的好的p12證書上傳到云信后臺,需要注意證書一定要與項目中的環(huán)境對應,沙盒證書對應測試環(huán)境,生產證書對應線上環(huán)境,如果出現(xiàn)錯誤會導致推送收不到。
上傳證書

復習一下導出p12證書

  • 點擊download 獲取 aps.cer證書文件
獲取 aps.cer
  • 雙擊aps.cer文件,會自動打開鑰匙串程序
雙擊aps.cer文件
  • 鼠標右擊,點擊導出p12證書
導出p12證書
  • 自定義一個密碼用來保護p12證書
設定密碼

到此推送的p12證書已經創(chuàng)建完畢了,可將該證書上傳至服務器

編寫推送代碼

//
//  AppDelegate.m
//  YXPushTester
//
//  Created by Nick Deng on 2017/3/5.
//  Copyright ? 2017 UnclePluto. All rights reserved.
//

#import "AppDelegate.h"
#import "NIMSDK.h"

@interface AppDelegate () <NIMLoginManagerDelegate>

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSLog(@"%@",launchOptions);
#if defined(DEBUG)||defined(_DEBUG)
    // debug環(huán)境初始化sdk并聲明后臺上傳的證書名
    [[NIMSDK sharedSDK] registerWithAppID:@"你的appkey" cerName:@"云信后臺上傳的測試證書名"];  
#else
    // release 環(huán)境初始化sdk并聲明后臺上傳的證書名
    [[NIMSDK sharedSDK] registerWithAppID:@"你的appkey" cerName:@"云信后臺上傳的線上證書名"];  
#endif
    [[[NIMSDK sharedSDK] loginManager] addDelegate:self];
    // 向蘋果服務器注冊apns服務
    [self registerAPNs]; 
    // 登陸一個云信賬號,只有成功登陸后才可以收到云信推送
    [[[NIMSDK sharedSDK] loginManager] login:@"account"
                                       token:@"password"
                                  completion:^(NSError *error) {
                                      NSLog(@"%@",error);
                                  }]; 
    return YES;
}

// 設置登陸回調監(jiān)聽
- (void)onLogin:(NIMLoginStep)step{
    NSLog(@"%ld",(long)step);
}

// 注冊具體實現(xiàn)
- (void)registerAPNs
{
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerForRemoteNotifications)])
    {
        UIUserNotificationType types = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound |      UIRemoteNotificationTypeAlert;
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types
                                                                                 categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    }
    else
    {
        UIRemoteNotificationType types = UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound |        UIRemoteNotificationTypeBadge;
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:types];
    }
}


// 注冊成功 蘋果服務器下發(fā)deviceToken
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    // 將deviceToken 上傳至云信服務器。這樣云信服務器才知道推送到哪個設備
    [[NIMSDK sharedSDK] updateApnsToken:deviceToken]; 
    NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken:  %@", deviceToken);
    
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    NSLog(@"receive remote notification:  %@", userInfo);
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
    NSLog(@"fail to get apns token :%@",error);
}


@end

```
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容