iOS推送证书设置指南

创建App ID

  • 登陆 苹果开发者中心 点击图标进入证书管理界面
iOS推送证书设置指南_第1张图片
点击Certificates, IDs & Profiles图标
  • 在证书管理界面创建相应的APPID,Bundle ID与项目对应即可
iOS推送证书设置指南_第2张图片
选择APPIDs选项
  • 创建 App ID,如果已经自动创建好了可以跳过这一步骤
iOS推送证书设置指南_第3张图片
点击 ➕
iOS推送证书设置指南_第4张图片
创建App ID,Bundle ID与项目对应即可
  • 在创建App ID 的时候在App Services内勾选Push Notifications功能,申请推送权限


    iOS推送证书设置指南_第5张图片
    勾选Push Notifications

到这里App ID已经创建完毕


配置和下载证书

  • 选择证书管理界面 点击 ➕ 创建一个新的证书


    iOS推送证书设置指南_第6张图片
    Snip20170305_9.png
  • 我们直接选择创建一个测试证书

iOS推送证书设置指南_第7张图片
创建一个测试证书
  • 选择你刚刚的创建的App ID
iOS推送证书设置指南_第8张图片
选择配置的App ID
  • 按照提示导出签名证书并上传
iOS推送证书设置指南_第9张图片
签名证书
  • 进入系统自带的钥匙串访问应用,点击 钥匙串访问 ->证书助理->从证书颁发机构请求证书

    iOS推送证书设置指南_第10张图片
    请求证书

  • 填写相关信息,并且选择保存到本地磁盘

iOS推送证书设置指南_第11张图片
保存到磁盘
  • 回到将刚刚请求完的证书上传至刚刚的页面
iOS推送证书设置指南_第12张图片
选择.certSigningRequest上传
  • 点击download 获取 aps.cer证书文件
iOS推送证书设置指南_第13张图片
获取 aps.cer
  • 双击aps.cer文件,会自动打开钥匙串程序
iOS推送证书设置指南_第14张图片
双击aps.cer文件
  • 鼠标右击,点击导出p12证书
iOS推送证书设置指南_第15张图片
导出p12证书
  • 自定义一个密码用来保护p12证书
iOS推送证书设置指南_第16张图片
设定密码

到此推送的p12证书已经创建完毕了,可将该证书上传至服务器


Provisioning Profile的创建

  • 创建Provisioning Profile的前提是已经创建了待发布应用所使用的Bundle ID的App ID,而且为该App ID创建了APNs证书,也就是完成了我上面叙述的几个步骤,这个时候我们就可以来创建Provisioning Profile了。

  • 选择Provisioning Profile,点击 ➕ 进行创建

iOS推送证书设置指南_第17张图片
Snip20170305_29.png
  • 这个地方红框中框出的选项依次代表
  1. 开发测试环境
  1. 上传到appstore的生产环境(如果是企业证书这里会是In House)
  2. 用于内部测试的生产环境
iOS推送证书设置指南_第18张图片
这里我们选择测试环境
  • 选择对应的App ID
iOS推送证书设置指南_第19张图片
选择对应的App ID
  • 选择所属的开发者证书


    iOS推送证书设置指南_第20张图片
    选择所属的开发者证书
  • 为该Provisioning Profile选择将要安装的设备


    iOS推送证书设置指南_第21张图片
    选择将要安装的设备
  • 给该Provisioning Profile填写名称


    iOS推送证书设置指南_第22张图片
    填写名称
  • 创建完成点击下载


    iOS推送证书设置指南_第23张图片
    创建完成
  • 线上环境的创建方式相同,你可以在填写名称时表明时测试环境还是先上环境


Xcode配置

  • 双击下载下来的Provisioning Profile,可以添加到xcode

  • 点击项目,选择目标TARGETS后进入Build Setting 界面,搜索“Code signing”,加载创建Provisioning Profile时指定的开发者证书

iOS推送证书设置指南_第24张图片
指定开发者证书
  • 导入对应的Provisioning Profile** debug导入沙盒环境的Provisioning Profile,release导入生产环境的Provisioning Profile**
iOS推送证书设置指南_第25张图片
导入Provisioning Profile
  • 在 xcode Capabilities 开启推送功能
iOS推送证书设置指南_第26张图片
Capabilities 开启推送

接入云信apns推送

  • 完成相应证书配置

  • 登陆云信后台 云信后台,进入证书管理界面

iOS推送证书设置指南_第27张图片
进入云信证书管理
  • 在标识管理中填入自己应用的 Bundle ID
iOS推送证书设置指南_第28张图片
Bundle ID填写
  • 将导出的好的p12证书上传到云信后台,需要注意证书一定要与项目中的环境对应,沙盒证书对应测试环境,生产证书对应线上环境,如果出现错误会导致推送收不到
iOS推送证书设置指南_第29张图片
上传证书

复习一下导出p12证书

  • 点击download 获取 aps.cer证书文件
iOS推送证书设置指南_第30张图片
获取 aps.cer
  • 双击aps.cer文件,会自动打开钥匙串程序
iOS推送证书设置指南_第31张图片
双击aps.cer文件
  • 鼠标右击,点击导出p12证书
iOS推送证书设置指南_第32张图片
导出p12证书
  • 自定义一个密码用来保护p12证书
iOS推送证书设置指南_第33张图片
设定密码

到此推送的p12证书已经创建完毕了,可将该证书上传至服务器

编写推送代码

//
//  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 () 

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSLog(@"%@",launchOptions);
#if defined(DEBUG)||defined(_DEBUG)
    // debug环境初始化sdk并声明后台上传的证书名
    [[NIMSDK sharedSDK] registerWithAppID:@"你的appkey" cerName:@"云信后台上传的测试证书名"];  
#else
    // release 环境初始化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;
}

// 设置登陆回调监听
- (void)onLogin:(NIMLoginStep)step{
    NSLog(@"%ld",(long)step);
}

// 注册具体实现
- (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];
    }
}


// 注册成功 苹果服务器下发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

```

你可能感兴趣的:(iOS推送证书设置指南)