iOS推送证书设置指南

创建App ID

点击Certificates, IDs & Profiles图标
  • 在证书管理界面创建相应的APPID,Bundle ID与项目对应即可
选择APPIDs选项
  • 创建 App ID,如果已经自动创建好了可以跳过这一步骤
点击 ➕
创建App ID,Bundle ID与项目对应即可
  • 在创建App ID 的时候在App Services内勾选Push Notifications功能,申请推送权限


    勾选Push Notifications

到这里App ID已经创建完毕


配置和下载证书

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


    Snip20170305_9.png
  • 我们直接选择创建一个测试证书

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

    请求证书

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

保存到磁盘
  • 回到将刚刚请求完的证书上传至刚刚的页面
选择.certSigningRequest上传
  • 点击download 获取 aps.cer证书文件
获取 aps.cer
  • 双击aps.cer文件,会自动打开钥匙串程序
双击aps.cer文件
  • 鼠标右击,点击导出p12证书
导出p12证书
  • 自定义一个密码用来保护p12证书
设定密码

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


Provisioning Profile的创建

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

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

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


    选择所属的开发者证书
  • 为该Provisioning Profile选择将要安装的设备


    选择将要安装的设备
  • 给该Provisioning Profile填写名称


    填写名称
  • 创建完成点击下载


    创建完成
  • 线上环境的创建方式相同,你可以在填写名称时表明时测试环境还是先上环境


Xcode配置

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

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

指定开发者证书
  • 导入对应的Provisioning Profile** debug导入沙盒环境的Provisioning Profile,release导入生产环境的Provisioning Profile**
导入Provisioning Profile
  • 在 xcode Capabilities 开启推送功能
Capabilities 开启推送

接入云信apns推送

  • 完成相应证书配置

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

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

复习一下导出p12证书

  • 点击download 获取 aps.cer证书文件
获取 aps.cer
  • 双击aps.cer文件,会自动打开钥匙串程序
双击aps.cer文件
  • 鼠标右击,点击导出p12证书
导出p12证书
  • 自定义一个密码用来保护p12证书
设定密码

到此推送的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 () <NIMLoginManagerDelegate>

@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

```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,780评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,424评论 1 305
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,397评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,576评论 0 218
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,997评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,945评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,107评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,850评论 0 208
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,625评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,804评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,285评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,613评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,291评论 3 242
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,164评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,963评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,096评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,886评论 2 278

推荐阅读更多精彩内容