IOS开发笔记——用PushMeBaby测试Push推送

本文记录了在使用PushMeBaby测试iOS Push推送时遇到的三个问题及解决方案。包括:设置正确的服务器地址(sandbox或distribution)、连接成功的标志(返回0的log)以及证书导入的关键步骤(需包含私钥的.p12文件)。通过这些解决方法,成功解决了Push推送的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做的项目涉及到Push,关于Push的配置网上的资料很多了,按照资料一步步做就可以了,这篇文章记录的是用来测Push的一个小项目叫Pushmebaby,git上可以很容易地找到这个项目,不过这个项目用起来还是有一些坑的,下面我就讲讲我遇到的那些坑,希望可以避免。
PushMeBaby下载下来是这样的:
(https://img-blog.youkuaiyun.com/20150720143138640)

导入你项目的.cer文件,ApplicationDelegate.m文件中deviceToken改成你需要接受消息的设备的DeviceToken,
self.certificate = [[NSBundle mainBundle] pathForResource:@"apns" ofType:@"cer"];改成你cer文件的名字。
坑一,你代码中可能拿不到.cer文件,那是你导入的不对,通过在项目上右击选择add File是肯定可以拿到文件的,这个是小坑,像我这样的菜鸟才会踩;
坑二,你通过git下面下下来的代码所有的配置都是针对developer版本的,如果你是要测distribution版本,需要在代码中改两个配置

// result = MakeServerConnection(“gateway.sandbox.push.apple.com”, 2195, &socket, &peer);NSLog(@”MakeServerConnection(): %d”, result);

result = MakeServerConnection("gateway.push.apple.com", 2195, &socket, &peer);

//  result = SSLSetPeerDomainName(context, "gateway.sandbox.push.apple.com", 30); NSLog(@"SSLSetPeerDomainName(): %d", result);

result = SSLSetPeerDomainName(context, "gateway.push.apple.com", 22);
NSLog(@"SSLSetPeerDomainName(): %d", result);

加注释符的是sandbox版本也就是developer版本,不加注释符的是distribution版本,总共改两个地方。

坑三,也就是困扰我时间最长的,连接成功,log打出来应该是都返回0,如下:

2015-07-20 15:02:05.588 PushMeBaby[1416:165461] MakeServerConnection(): 0
2015-07-20 15:02:05.589 PushMeBaby[1416:165461] SSLNewContext(): 0
2015-07-20 15:02:05.589 PushMeBaby[1416:165461] SSLSetIOFuncs(): 0
2015-07-20 15:02:05.590 PushMeBaby[1416:165461] SSLSetConnection(): 0
2015-07-20 15:02:05.590 PushMeBaby[1416:165461] SSLSetPeerDomainName(): 0
2015-07-20 15:02:05.590 PushMeBaby[1416:165461] SecKeychainOpen(): 0
2015-07-20 15:02:05.599 PushMeBaby[1416:165461] SecIdentityCreateWithCertificate(): 0
2015-07-20 15:02:05.599 PushMeBaby[1416:165461] SSLSetCertificate(): 0

可是SecIdentityCreateWithCertificate(): 0这部拿到的identity一直为nil,返回报错为SecIdentityCreateWithCertificate(): -25300,这个多半是因为证书不是你这太电脑申请的,.cer文件别人传你以后,你直接双击,没有生成私钥,你可以打开你的keychain,装的证书左边没有一个可以点开的小三角,就说明有问题正确的情况如下

解决方法是跟申请证书的人要私钥,.p12文件,然后在keychain-钥匙串-登录中导入这个.p12文件,不会导入的请自行google。导入以后证书中就有小三角了,再运行pushmebaby,能收到push消息了。

以上就是我运用PushMeBaby遇到的三个坑,其他问题大家留言补充哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值