關(guān)于百度推送iOS SDK1.5.4 Register時(shí)報(bào)[BPushUtility isAllowedNotificationCalback]: unrecognized selector s...

這兩天后臺(tái)反應(yīng)說iOS這邊百度推送報(bào)錯(cuò)說證書過期,然后就開始了漫長的填坑之旅.....

1.證書過期咋辦

  • 首先去開發(fā)者中心看看發(fā)布證書或者開發(fā)證書還在不在,如果發(fā)現(xiàn)不在了,那就是蘋果給你刪了(現(xiàn)在到期會(huì)自動(dòng)刪),然后重新生成一個(gè)就好了。如果快過期了,重新生成一個(gè),然后再把原來那個(gè)revoke
  • 搞完證書之后,檢查在App IDs里面,對(duì)應(yīng)的AppID是否開啟了推送,完整流程可以看這篇文章

2.更新證書和SDK

  • 上面的pem文件導(dǎo)出后,去到百度推送官網(wǎng),更新證書。
  • 下載最新的SDK,然后到工程里面替換掉,舊版SDK會(huì)有一個(gè)BPushCerResource.bundle,新版已經(jīng)不需要了,刪了就行。
    SDK包解壓后長這樣
    (如果用到了廣告標(biāo)志符就選idfaversion里面的Bpush.h、libPush.a)兩個(gè)版本的文件夾里面都有一個(gè)test.caf,這個(gè)是百度的demo用來播放聲音的,忽略就好。拉倒工程后記得去檢查Build Phases里面的Link Binary With Libraries里面有沒有那個(gè).a文件。

3.坑.....

我在替換完文件之后,發(fā)現(xiàn)在[Bpush register...]方法會(huì)直接崩潰

報(bào)錯(cuò)....
去百度了一圈沒找到(事實(shí)證明,百度的問題不要問百度....),后面經(jīng)過一番思考(google),終于找到了問題所在,解決方式也很簡單。
Other Linker Flags里添加-all_load或者是-Objc,一般來說添加-Objc就可以了,-all_load有時(shí)候會(huì)報(bào)錯(cuò)。這兩個(gè)字段的差異,可以去找其他文章看看。

4.總結(jié)

  • 按照官方demo的順序調(diào)用SDK的方法,比如registerDeviceToken要在bindChannelWithCompleteHandler之前等等這些。
  • 檢查自己生成的pem文件是否能正常使用,打開終端,進(jìn)入到pem文件目錄。
    開發(fā)pem測(cè)試命令:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert 開發(fā)pem文件名.pem
    發(fā)布pem測(cè)試命令:openssl s_client -connect gateway.push.apple.com:2195 -cert 發(fā)布pem文件名.pem
    輸入命令之后,會(huì)冒出一堆東西,然后終端會(huì)提示讓你輸入東西,這時(shí)候你隨便輸入什么,然后回車,就會(huì)顯示closed,這時(shí)候pem就是好的,能正常使用。如果不對(duì),那么就得重新去生成pem文件。

6.問題

最開始我沒想到要替換成最新版的SDK,但是在使用以前的SDK的時(shí)候,網(wǎng)絡(luò)暢通,bindChannelWithCompleteHandler方法會(huì)報(bào)錯(cuò),error code 10002 網(wǎng)絡(luò)問題,查了一下,有人說把BPushCerResource.bundle添加到Copy Bundle Resources就能解決,試了下沒用,希望有解決過的朋友可以回復(fù)一下。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容