1.推送的由來:
推送興起于Email,用于提醒用戶郵件的更新. ?后續(xù)由于移動互聯(lián)網(wǎng)的迅速發(fā)展,推送被廣泛應(yīng)用.
2.推送的原理:
推送的本質(zhì)原理是客戶端與服務(wù)器之間的長連接. ?基于長連接,服務(wù)器可以主動向客戶端推送消息, 客戶端收到推送消息來展示給用戶.
3.推送的實現(xiàn)方式:
方案1-push: 客戶端與服務(wù)器維護一個TCP/IP的長連接,當(dāng)有推送消息時,直接向客戶端push.
方案2-pull: 客戶端定時向服務(wù)器pull請求. ?
兩種方式相比較而言, 方案1更合理更有效, 方案2會存在客戶端不能長久在后臺存活以及消耗電量以及消耗流量等問題.
4.iOS推送:
蘋果官方推送: APNS. ?APNS是由蘋果官方維護的, 屬于系統(tǒng)級別,所以推送消息比較穩(wěn)定.
iOS的所有推送信息, 都會發(fā)送到蘋果服務(wù)器,然后由蘋果服務(wù)器下發(fā)到客戶端.
5.Android推送:
國外:建議使用谷歌官方推送FCM. ? FCM是由谷歌官方維護的,同iOS一樣, 所有推送信息都會發(fā)送到谷歌服務(wù)器,再由谷歌下發(fā)到客戶端.
國內(nèi):由于谷歌推送不能在國內(nèi)使用, 所以需要Android開發(fā)者自己去維護長連接.或者選取一些第三方平臺.
6.Android推送開發(fā):
方案1: ?MQTT推送, ?此推送是由IBM提出的輕量級的推送, 客戶端與服務(wù)器之間通過心跳包來監(jiān)測對方是否存在,然后通過訂閱&發(fā)布來實現(xiàn)消息的推送.但是缺點也很明顯,當(dāng)客戶端被殺死后會無法收到推送.
方案2: 第三方推送, 如騰訊信鴿, 友盟+, 極光推送,小米推送等.目前很多Android的APP在國內(nèi)都是使用第三方的推送.
方案3: 公司基于XMPP協(xié)議開發(fā). 谷歌的推送也是基于XMPP協(xié)議開發(fā)的.