|
前置说明:【开发工具:Xcode12.1 真机iPhone12 14.4;】
【已经注册了友盟账号,获取了UMAppKey;】
【已经注册了开发者账号,已经获得了:App ID,Bundle ID,Team ID】
【已经在开发者账号里添加了测试设备的设备UDID】
一,推送SDK的集成与项目配置
1,友盟SDK集成(选择了自动集成)
pod 'UMCommon' pod 'UMPush'
2,项目配置
2.1 导入系统依赖库UserNotifications.framework 。
具体操作如下:点击项目——>TARGET——>Build Phases——>Link Binary with Libraries ——>展开点击下方 +——>搜索UserNotifications——>选中UserNotifications.framework——>点击Add

2.2 添加推送功能。
具体操作如下:点击项目——>TARGET——>Signing&Capabilities——>点击“ +Capability”——>选择“Push Notifications”

2.3 打开后台推送权限设置。
具体操作如下:点击项目——>TARGET——>Signing&Capabilities——>点击“ +Capability”——>选择“Background Modes”——>展开“Background Modes”——>选中“Remote notifications”

3 代码实现
3.1 初始化友盟,普通推送集成
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[UMConfigure initWithAppkey:UMAppKey channel:@"App Store"];
// Push组件基本功能配置
UMessageRegisterEntity * entity = [[UMessageRegisterEntity alloc] init];
//type是对推送的几个参数的选择,可以选择一个或者多个。默认是三个全部打开,即:声音,弹窗,角标
entity.types = UMessageAuthorizationOptionBadge|UMessageAuthorizationOptionSound|UMessageAuthorizationOptionAlert;
[UNUserNotificationCenter currentNotificationCenter].delegate = self;
[UMessage registerForRemoteNotificationsWithLaunchOptions:launchOptions Entity:entity completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
WeeLog(@"UMessage register successfully!");
} else {
WeeLog(@"UMessage register failed!");
}
}];
}
3.2 打印deviceToken (推送测试时需要用到设备名称及deviceToken)
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(nonnull NSData *)deviceToken {
WeeLog(@"didRegisterForRemoteNotificationsWithDeviceToken success!");
NSMutableString *deviceTokenString = [NSMutableString string];
const char *bytes = deviceToken.bytes;
NSUInteger iCount = deviceToken.length;
for (int i = 0; i < iCount; i++) {
[deviceTokenString appendFormat:@"%02x", bytes[i]&0x000000FF];
}
NSLog(@"64位deviceToken:%@", deviceTokenString);
}
//以上是极简的代码信息,可完成测试部分的工作
二,推送证书的配置
【说明:使用消息推送功能前,需要严格按照此文档配置相关证书。否则将会影响消息推送组件的正常使用。】
1,关于证书
1.1 iOS证书分为两类:Development和Production(Distribution)。
1)Developer Certification(开发证书)
安装在电脑上提供权限:开发人员通过设备进行真机测试。可以生成副本供多台电脑安装;
2)Distribution Certification(发布证书)
安装在电脑上提供发布iOS程序的权限:开发人员可以制做测试版和发布版的程序。不可生成副本,仅有配置该证书的电脑才可使用。
1.2 Provisioning Profile(授权文件)
1)Developer Provisioning Profile(开发授权文件)
在装有开发证书或副本的电脑上使用,开发人员选择该授权文件通过电脑将程序安装到授权文件记录的设备中,即可进行真机测试。
注意:确保电脑有权限真机调试,即安装了开发证书或副本;在开发工具中程序的Bundle identifier和选中使用的授权文件的App Id要一致;连接调试的设备的 UDID在选中的授权文件中有记录。
2)Distribution Provisioning Profile(发布授权文件)
在装有发布证书的电脑上(即配置证书的电脑,只有一台)制做测试版和发布版的程序。发布版就是发布到App Store上的程序文件,开发者帐号创建授权文件时选择store选项,选择App Id,无需选择UDID;测试版就是在发布之前交给测试人员可同步到设备上的程序文件,开发者帐号创建授权文件时选择AdHoc,选择App Id和UDID;只有选中的UDID对应的设备才可能安装上通过该授权文件制做的程序。
1.3 Keychain(开发秘钥)
安装证书成功的情况下证书下都会生成Keychain,上面提到的证书副本(导出证书重新命名)就是通过配置证书的电脑导出Keychain(就是.p12文件)安装到其他电脑上,让其他电脑得到证书对应的权限。Developer Certification就可以制做副本Keychain分发到其他电脑上安装,使其可以进行真机测试。注意:Distribution Certification只有配置证书的电脑才可使用,因此即使导出导出Keychain安装到其他电脑上,其他电脑也不可能具有证书的权限。
2,创建证书

2.1 注意:创建的APP ID要与自己项目的Bundle ID保持一致。如果已经有APP ID,请确保自己的APP ID已经开通了Push功能,如果没有开通,在开发者账户里,点击Identifiers,进入已经创建的ID ----> Edit your App ID Configuration ----> 在Capabilities 选中“Push Notifications”。然后save。

2.2 创建并配置CRS文件
1)CSR是Cerificate Signing Request的英文缩写,即证书请求文件。证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件。证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。
2)创建CRS文件:在你的Mac中找到钥匙串——->钥匙串访问———>证书管理———>从证书颁发机构请求证书,如下图所示
邮箱地址 常用名称:可以填写一个项目相关的任意邮箱号和名称。创建好的文件存放在桌面就行,方便下续使用。

2.3 创建证书
1)开发证书
在开发者账户里,点击Certificates,点击Certificates+,看到如下界面: 选择iOS App Development【如果是发布上线,需要选择Distribution】
在choose file…中选择本地的CertificateSigningRequest(CSR)文件,然后点击Download, 将证书下载到本地,双击下载的开发调试证书(文件名为:iOS_development.cer),双击完会打开钥匙串应用程序,就可以在钥匙串访问中的我的证书中找到。
2)开发环境的推送证书
在开发者账户里,点击Certificates,点击Certificates+,看到如下界面: 选择Apple Push Notification service SSL (Sandbox)【这是开发环境的推送证书】
注意:推送证书分为开发环境和生产环境,如果需要生成生产环境的推送证书请选择:Apple Push Notification service SSL (Sandbox&Production)

2.4 创建并配置Provisioning Profiles
在开发者账户里,点击Profiles,点击Profiles+,看到如下界面: 选择“iOS App Development”, 继续选择对应的app ID,继续选择开发证书,继续选择devices ,然后命名这个profile文件,下载profile,双击证书即可。

2.5 导出推送证书的p12文件
注意:在钥匙串访问(KeyChain)的我的证书中选择刚刚导入的证书,选择导出,注意不要选中私钥,并设置相应密码即可。(记住密码:密码将在之后在U-Push后台上传推送证书时所使用)
2.6 上传P12文件到U-Push
点击右上角“新建应用”:


然后以同样的上述方式,配置生产(发布)的证书,并导出p12文件设置密码,上传到umeng官网后台的生产证书项里。
三,测试推送服务。
通过代码实现的内容,可以找到测试设备的deviceToken,在Upush平台上添加测试设备:包括了 设备名称(这个可以随便填写)和64位的deviceToken
然后就可以进行推送测试。

以上均为测试环境的处理方式,推送也是选择的测试模式。
其他更高级的推送处理:包括推送带图 解析推送内容等,待整理。。。
|