這兩天后臺反應(yīng)說iOS這邊百度推送報錯說證書過期伸但,然后就開始了漫長的填坑之旅.....
1.證書過期咋辦
- 首先去開發(fā)者中心看看發(fā)布證書或者開發(fā)證書還在不在若厚,如果發(fā)現(xiàn)不在了攻人,那就是蘋果給你刪了(現(xiàn)在到期會自動刪)颈走,然后重新生成一個就好了。如果快過期了攻柠,
先
重新生成一個,然后再把原來那個revoke
- 搞完證書之后后裸,檢查在App IDs里面瑰钮,對應(yīng)的AppID是否開啟了推送,完整流程可以看這篇文章微驶。
2.更新證書和SDK
- 上面的pem文件導(dǎo)出后浪谴,去到百度推送官網(wǎng),更新證書因苹。
- 下載最新的SDK苟耻,然后到工程里面替換掉,舊版SDK會有一個
BPushCerResource.bundle
扶檐,新版已經(jīng)不需要了凶杖,刪了就行。廣告標(biāo)志符
就選idfaversion
里面的Bpush.h款筑、libPush.a
)兩個版本的文件夾里面都有一個test.caf
智蝠,這個是百度的demo用來播放聲音的,忽略就好奈梳。拉倒工程后記得去檢查Build Phases
里面的Link Binary With Libraries
里面有沒有那個.a
文件杈湾。
3.坑.....
我在替換完文件之后,發(fā)現(xiàn)在[Bpush register...]
方法會直接崩潰
Other Linker Flags
里添加-all_load
或者是-Objc
,一般來說添加-Objc
就可以了限煞,-all_load
有時候會報錯抹恳。這兩個字段的差異,可以去找其他文章看看署驻。
4.總結(jié)
- 按照官方demo的順序調(diào)用SDK的方法奋献,比如
registerDeviceToken
要在bindChannelWithCompleteHandler
之前等等這些。 - 檢查自己生成的pem文件是否能正常使用旺上,打開終端瓶蚂,進入到pem文件目錄。
開發(fā)pem
測試命令:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert 開發(fā)pem文件名.pem
發(fā)布pem
測試命令:openssl s_client -connect gateway.push.apple.com:2195 -cert 發(fā)布pem文件名.pem
輸入命令之后宣吱,會冒出一堆東西窃这,然后終端會提示讓你輸入東西,這時候你隨便輸入什么征候,然后回車杭攻,就會顯示closed
祟敛,這時候pem就是好的,能正常使用兆解。如果不對馆铁,那么就得重新去生成pem文件。
6.問題
最開始我沒想到要替換成最新版的SDK锅睛,但是在使用以前的SDK的時候埠巨,網(wǎng)絡(luò)暢通,bindChannelWithCompleteHandler
方法會報錯现拒,error code 10002 網(wǎng)絡(luò)問題
辣垒,查了一下,有人說把BPushCerResource.bundle
添加到Copy Bundle Resources
就能解決印蔬,試了下沒用勋桶,希望有解決過的朋友可以回復(fù)一下。