iOS8關於推送方面的問題

2021-06-27 08:03:05 字數 1775 閱讀 3549

因為之前一直沒有做過利用推送聊天,然後最近專案中也出現了推送相關的問題,最主要的是要利用推送來幫助實現im。

先說一下所謂的推送機制,我個人理解,所謂的推送無非就是說,每個機器是有自己固定的機器碼的,也就是devicetoken,不管你軟體換了幾個賬號,你的devicetoken是不變的,之所以換了號後你收不到之前賬號的推送是因為你推送給蘋果的那個伺服器資料庫更新了你賬號與機器碼的對應,然後你將你這個機器碼發給你的伺服器,你的伺服器呢就拿著你的機器碼然後再發給apns,apns接收到你伺服器的推送之後就會拿到你的機器碼,然後將你伺服器發的訊息,傳送到指定機器碼的機器上。好吧。貌似就是這樣。

關於證書的配置,現在這裡只給你們說下關於pem證書的配置,因為在php服務端你要給的不再是p12證書,必須是pem證書,這樣你的伺服器才能有資格叫蘋果伺服器幫你推送,

pem檔案是伺服器向蘋果伺服器做推送時候需要的檔案,主要是做伺服器的小夥伴們要用,下面介紹一下pem檔案的生成。

12。對「private key」做同樣操作,儲存為 apns-dev-key.p12 檔案。

同樣 distribution certificate 的pem檔案生成方式一樣。

openssl pkcs12 -clcerts -nokeys -out apns-dis-cert.pem -in apns-dis-cert.p12

openssl pkcs12 -nocerts -out apns-dis-key.pem -in apns-dis-key.p12

openssl rsa -in apns-dis-key.pem -out apns-dis-key.pem

cat apns-dis-cert.pem apns-dis-key.pem > apns-dis.pem

if([[[

uidevice

currentdevice]systemversion]floatvalue] >=

8.0) else

} //ios8

else

if ([identifierisequaltostring:@"customaction2"])

#endif }

先說一下上面這三個[[

] registerforremotenotificationtypes

:(uiremotenotificationtypealert

| uiremotenotificationtypebadge

| uiremotenotificationtypesound

)];的意思吧,我理解的是第乙個意思是提醒也就是提示框,第二個是你專案彈出提示訊息而你又沒看時的訊息數量,第三個是提示訊息來時候的鈴聲。

這裡說明一下,並不是說你註冊了你的通知鈴聲就會響你的那個訊息數量就會逐漸增加顯示,這些東西註冊只是說明你的推送支援這麼個功能而已,具體能不能有效果要看你伺服器給apns上傳的有沒有這些引數,要是沒有,呵呵,恭喜你就算你再怎麼努力也沒用,我就是遇到了這個問題,然後研究一下午發現是伺服器方面的問題,直接苦逼了,話說伺服器要上傳給apns以下資料

然後你把你的devicetoken給你的伺服器,然後你的伺服器上傳到蘋果伺服器,蘋果伺服器根據你的devicetoken給你發推送,推送過來的訊息是在下邊方法中獲得

下邊這個方法是失敗的時候呼叫的。

nslog

(@"didfailtoregisterforremotenotificationswitherror*****==%@",[

nsstring

stringwithformat

:@"error: %@", err]); }

iOS 8推送註冊方式改變的問題

ios 8發布之後,不過有的開發者也注意到了在ios 8上推送通知的註冊方式有所變化,報錯提示為 1 registerforremotenotificationtypes is not supportedinios 8.0 and later.之後國外有開發者在使用了新的解決方案註冊成功後發現在ip...

iOS8 推送註冊方式改變的問題

不久之後iphone 6 6 plus就會在國內如雨後春筍般遍地開花了。ios 8早已現行一步,不過有的開發者也注意到了在ios 8上推送通知的註冊方式有所變化,報錯提示為 1registerforremotenotificationtypes is not supportedinios 8.0 a...

iOS8下的遠端推送

昨天做了一下遠端推送,今天寫下來,分享給需要的人。參考了很多篇文章,或許是ios8的改動,沒有一篇可以完整的看下來,所以打算自己寫一篇。後台我也寫了,用的是sae,php 很簡單,呼叫sae封裝好的乙個類就可以向apns發推送資訊。首先,來說一下蘋果的推送機制。顧名思義,推送,是指伺服器向客戶端傳送...