问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

iOS开发中push方式被什么取代

发布网友 发布时间:2022-04-25 20:55

我来回答

5个回答

热心网友 时间:2022-06-17 07:54

IOS开发中PUSH通过开发者push证书实现的,要实现通知推送只能使用push,无其他代替方法。

PUSH原理及实现方法:

原理图:

注:

Provider :应用自己的服务器;

APNS :Apple Push Notification Service的简称,苹果的PUSH服务器;

实现方法:

一、生成push证书。

1、用付费帐号登录到IOS开发者中心。

2、生成开发证书,生成开发证书过程中需要通过Keychain生成一个CSR文件,默认名为CertificateSigningRequest.certSigningRequest,这个文件将在生成push证书的时候用到。

二、创建一个App ID。

注:要用push功能的Bundle Identifier一定不能出现通配符,比如com.mycompany.* ,这样的名字是不能使用push的。

创建过程中Description可以任意填写,比如叫 push_demo ;

Bundle Identifier一般用 com.company.appname 这样的格式,例如com.mycompany.demo ;

三、生成Push SSL Certificate。

1、打开 Enable for Apple Push Notification service 选项,该选项下有 Development Push SSL Certificate 和 Proction Push SSL Certificate 两个SSL Certificate可以配置,前面一个是用来的开发的push证书,后面一个是用来发布的。我们以开发push证书为例,点击 Development Push SSL Certificate -> Configure ,后面会要求选择CSR文件,这就是生成开发证书时的CertificateSigningRequest.certSigningRequest文件,选择好CSR后就生成好相应的SSL Certificate了。下载下来,保存名为 aps_developer.cer 。

2、从Keychain中导出私钥、设置好密码,命名为private_key.p12。

3、生成push证书。

将aps_developer.cer转成pem格式

openssl x509 -in aps_developer.cer -inform DER -out aps_developer.pem -outform PEM
将private_key.p12格式的私钥转换成private_key.pem

openssl pkcs12 -nocerts -out private_key.pem -in private_key.p12
4、这一步会要求输入p12私钥的密码,以及设置新生成的pem的密码。

5、创建用于服务端的SSL p12格式证书,命名为aps_developer.p12

openssl pkcs12 -export -in aps_developer.pem -inkey private_key.pem -certfile CertificateSigningRequest.certSigningRequest -name "aps_developer" -out aps_developer.p12
6、这一步会要求输入private_key.pem的密码,注意不是private_key.p12的密码。如果密码错误,或者CertificateSigningRequest.certSigningRequest文件不匹配都不能正常生成aps_developer.p12文件,如果生成的aps_developer.p12文件大小是0,说明生成过程中出了问题,请检查pem私钥、密码、以及CertificateSigningRequest.certSigningRequest是否正确。

aps_developer.p12就是Provider向APNS发送push消息需要的SSL证书。把这个证书和密码提供给服务端,服务端就可以发送push消息给APNS了。这时服务端已经可以工作了,但客户端还必须配置相应的Provisioning Profile才能启动应用的push功能。

服务器配置需注意的是,由于我们生成的是开发环境的push证书,所以服务器应该连接APNS的sandbox环境地址:gateway.sandbox.push.apple.com:2195 ,如果应用正式发布,就要连接正式环境,必须生成相应的发布证书,并连接APNS正式环境地址:gateway.push.apple.com:2195 。

CertificateSigningRequest.certSigningRequest

private_key.p12

aps_developer.cer

四、生成Provisioning Profile

1、新建Profile,命名为push_dev;

2、选择相应证书;

3、App ID选择push_demo;

4、选择设备;

5、下载并安装该Profile供开发使用;

6、Xcode证书设置、Info.plist设置

用Xcode打开客户端工程,设置Info.plist的Bundle identifier为com.mycompany.demo 。

打开工程设置,必须将证书设置为与push_dev关联的证书。

7、客户端获取deviceToken

服务端要发送push消息给某一设备还必须知道该设备的deviceToken。应用运行后获取到deviceToken,然后上传给服务器,下面介绍应用如何获取deviceToken。应用必须先注册使用push功能。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge)];
     // do something
     // ...
 }

在AppDelegate中添加下面方法来获取deviceToken:

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
     NSString *token = [NSString stringWithFormat:@"%@", deviceToken];
     NSLog(@"%@", token);
 }

 - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
     NSLog(@"%@", error);
 }

应用获取到deviceToken后,上传给Provider,Provider就可以用这个deviceToken给这个设备push消息了。

热心网友 时间:2022-06-17 07:55

没有其他取代的方法

热心网友 时间:2022-06-17 07:55

没有被取代啊

热心网友 时间:2022-06-17 07:56

没有被取代

热心网友 时间:2022-06-17 07:57

storyBoard里不推荐了,应该是用show
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
夫妻养狗狗把谁当主人 两人同养狗认谁当主人 什么蔬菜和水果可以美容祛斑呢? vivox60怎么查看参数配置详情 怎样查看vivo手机的屏幕参数? vivo手机怎么看手机参数 vi##手机怎么看配置? 义乌到湖州没有直达快客???必须到南浔?? 湖州到绍兴的汽车有几班? 注销驾考需要本人吗 ios推送是如何实现的? push notification device token 会无效吗 在下面的C#程序中为什么不能按加减乘除的优先级进行运算,求高手指点改正 后缀表达式转换为前缀式 操作数是实数 用C++和栈 匡威女孩绝不认输,“联名小花”系列值得入手吗? 网络测试工程师需要哪些能力(越详细越好) 帮忙推荐一些好看的匡威 万斯的鞋子 网络系统集成的校园网络 匡威这款鞋的标志为什么有染色?是正品吗? 如何成功实施管理信息系统? 匡威帆布鞋海军蓝怎么搭配 匡威高帮帆布鞋,黑色和白色,买哪个好?? 欧阳娜娜是最喜欢匡威的女星,你喜欢帆布鞋吗? 计算机网络原理与技术实验 网络硬软件资源共享与TCP/IP网络调试排错 匡威橄榄绿与灰绿色有什么区别,哪款好看呢? 系统开发报告应该怎么写? 高帮匡威帆布鞋,女孩子最喜欢哪个颜色??? 老师让交一份以太网的组网实验报告。可是没做过实验。能帮忙下吗?谢了! 综合布线系统设计最后调试怎么调试, 匡威高帮帆布鞋买哪种颜色好? 消息推送类产品有哪些 快手的推送什么意思 设备上的deviceToken信息,每次都要上传到服务器上吗?求大神帮助 消息推送原理以及实现过程 怎么删除别人和自己的合拍? leancloud 怎么接收sessiontoken 如何统计app push 推送效果统计 用苹果apns推送通知,一个推送证书只能注册一个devicetoken吗 基于java的apns多线程消息推送终端是怎么处理内容的 - 信息提示 Java服务器端如何接收IOS远程推送传递来的devicetoken 在抖音无逄合拍吋出现抢境,让人无法合拍怎么办? 4am永远压枪灵敏度 韦神画面设置2020 大逃杀韦神键位怎么设置的 绝地求生职业选手键位 想问下绝地求生韦神快速开镜怎么设置的! 韦神这场直播的录播哪里可以看? 韦神参加过最强大脑吗 “宰相肚里能撑船”的典故出自哪里 北大韦神等十名青年科学家获奖,将均分1000万,他们是因何获奖的?