1. 程式人生 > >百度雲推送--分析與開發詳解

百度雲推送--分析與開發詳解

一:優勢分析

百度雲推送,極光推送和個推各自的優勢是什麼?

極光推送功能優勢:

1、高效穩定的推送通知

為合作伙伴提供長連線SDK,開發者的服務訊息可以推送到其客戶端。使你的應用程式保持高注意力,即使使用者沒有開啟應用程式,也能夠推送通知到達使用者手機。您可以即時向用戶推送活動提示、動態更新、積分資訊等通知。100萬併發量不超過40秒,水平伺服器架構,任何單點失效都並不會影響推送。

2、自由度高,推送自定義訊息。

強大的自定義訊息推送通道。開發者可以推送自定義的訊息內容。JPush SDK 把內容完全轉給開發者應用程式,由開發者應用程式去處理自定義訊息。

3、靈活推送工具

靈活地根據需要進行推送。管理Portal上的推送助手,方便快速推送,普通使用者都可操作。另外也提示API呼叫方式,靈活強大。

4.推送平臺技術架構先進,經過考驗的大規模使用者 Push 平臺

由於之前開發過IM應用,極光在訊息推送業務上有豐富的技術沉澱期,並且不斷地優化系統,滿足快速的業務增長。

免費推送服務

推送的使用者數量沒有限制,推送的訊息條數也沒有限制。

方便整合的SDK及良好的文件和技術支援體系

android 3分鐘demo

ios 簡單配置

客戶端SDK以非常低的代價保持連線,電量、流量消耗少。

推送內容的多少是由開發者決定的,網路狀況不穩定也會對電量造成影響。在不考慮推送的內容和網路影響前提下。理論資料平均值為:流量消耗 20K/天,電量消耗 30mAh/天

5、專業圖表、推送精準化

推送效果直觀呈現。推送到達了多少?到達後,使用者有沒有點選開啟應用?開啟應用後,使用者逗留的時間有沒有延長 ? 直觀的對比圖表,讓你輕鬆地評估推送效果。

這是極光推送應用後的資料趨勢圖:


雲推送平臺具備的優勢

單播訊息推送

通過繫結channel id、user id,可以向特定的Android客戶端傳送訊息或通知

高安全性

平臺在服務端與SDK進行通訊時進行了資料加密,保證客戶資料的隱私安全。同時,個推平臺還支援客戶對傳輸資料自主加密,滿足高安全性客戶的需求。

高可靠性

平臺伺服器部署在IDC核心機房,三線接入,保證不同運營商移動裝置接入的穩定性。個推平臺採用分散式架構部署,不僅系統容量可靈活擴容,還可以提供99.9% SLA。個信專業的運維團隊維護,訊息到達率超過96%。

低成本

平臺專注推送服務領域的研究,單臺裝置支援100-300萬用戶線上(根據單臺裝置配置會有波動),平均成本控制業界領先。

出乎意料的快速,瞬間送達

平臺的訊息投遞延時小於0.2s,無論何時何地,使用者移動裝置有網路即可送達。

專為手機優化,省電省流量

平臺採用自主研發的獨有協議,比XMPP更適合移動裝置使用,符合4S標準(小巧、省電、省流量、穩定)。實測移動裝置空載耗電每日15-50mAh,空載流量0.8-1.2M/月。

個推平臺具備的優勢

高安全性

個推平臺在服務端與SDK進行通訊時進行了資料加密,保證客戶資料的隱私安全。同時,個推平臺還支援客戶對傳輸資料自主加密,滿足高安全性客戶的需求。

高可靠性

個推平臺伺服器部署在IDC核心機房,三線接入,保證不同運營商移動裝置接入的穩定性。個推平臺採用分散式架構部署,不僅系統容量可靈活擴容,還可以提供99.9% SLA。個信專業的運維團隊維護,訊息到達率超過96%。

低成本

個推平臺專注推送服務領域的研究,單臺裝置支援100-300萬用戶線上(根據單臺裝置配置會有波動),平均成本控制業界領先。

出乎意料的快速,瞬間送達

個推平臺的訊息投遞延時小於0.2s,無論何時何地,使用者移動裝置有網路即可送達。

專為手機優化,省電省流量

個推平臺採用自主研發的獨有協議,比XMPP更適合移動裝置使用,符合4S標準(小巧、省電、省流量、穩定)。實測移動裝置空載耗電每日15-50mAh,空載流量0.8-1.2M/月。

易於實施

個推平臺移動裝置SDK整合半天即可完成,使用推送管理後臺,當天即可零開發群發訊息。同時,個推平臺也提供完善成熟的服務API可以與客戶已有業務系統緊密結合。

強大的分析報表

個推平臺可以提供應用的留存使用者,線上使用者等核心資料,並會不定期提供行業資料分析報告及客戶的行業排名指數。對於訊息投遞到使用者後的訪問行為,個推平臺也會提供精準的效果評估報告。

實現步驟

開發前準備

4.1 執行環境 

可運行於Android 2.1(API Level 7)及以上版本。 

4.2 引數申請及許可權開通 

4.2.1 獲取應用ID及API Key 

開發者需要使用百度賬號登入百度開發者中心註冊成為百度開發者並建立應用,方可獲取應用ID、對應的API Key及Secret Key等資訊。具體資訊,請參考百度開發者中心上的“建立應用”的相關介紹。 

其中,應用ID(即:APP ID)用於標識開發者建立的應用程式;API Key(即:Client_id)是開發者建立的應用程式的唯一標識,開發者在呼叫百度API時必須傳入此引數。 

4.3 賬戶支援 

4.3.1 百度賬戶 

開發者可選擇使用oauth2.0協議接入百度開放平臺,所有使用者標識使用百度的userid作為唯一標識,使用AccessToken作為驗證憑證。 

Android端用PushManager.startWork(context, PushConstants.LOGIN_TYPE_ACCESS_TOKEN, UserAccessToken)啟動基於百度賬戶的Push服務,當然要獲得AccessToken需要登陸介面的輔助,在Android demo裡有相關示例程式碼。 

4.3.2 無賬戶登入體系 

開發者無需接入百度賬戶體系,每個終端直接通過API Key向Server請求使用者標識userid,此id是根據端上的屬性生成,具備唯一性,開發者可通過此id對應到自己的賬戶系統,此方式方便靈活,但需要開發者自己設計賬戶體系和登入介面。無賬戶登入體系啟動Android端Push服務的方法: 

PushManager.startWork(context, PushConstants.LOGIN_TYPE_API_KEY, apiKey); 

(有賬戶無賬戶登入區別:唯一標示問題.

百度賬戶登入,所有使用者標示使用百度使用者的userid作為唯一標示,使用AccessToken作為驗證憑證.

無賬戶登入,直接通過API Key向Server請求使用者標識userid,此id是根據端上的屬性生成,具備唯一性.)

基本操作步驟

2 建立w應用,獲取 API Key 及 Secret Key

3 Android專案匯入相應jar包和.so檔案,

4 加入推送所需許可權,

5 建立廣播接收者,用來接受推送訊息的到來

6 在清單檔案中將之前獲取的API Key寫入

7 把示例(Android 專案)匯入 Eclipse 工程;

8 執行Android應用;

9 登入管理控制檯傳送通知;

10 手機端接收通知。

單播訊息推送

(1)嚮應用的特定終端推送訊息

一個channel id指定一個終端,因此在這種需求下,開發者需要通過服務端API,向一個特定channel id推送訊息。在推送之前,客戶端應用通過繫結介面的返回值獲取到channel id,並通過網路等手段傳送給開發者,開發者需自行維護channel id。

例如,Android客戶端,在呼叫了startWork之後,自定義訊息 receiver將會收到返回值,其中包含了channel id、user id等資訊。

(2)嚮應用的特定使用者推送訊息

雲推送用user id來表示使用者,因此在這種需求下,開發者需要通過服務端API,向一個特定user id推送訊息。和channel id獲取方式類似,客戶端應用通過繫結介面的返回值獲取到user id。開發者需要自行維護user id。

Android裝置與user id繫結,伺服器互動

如何讓user id和APP端使用者名稱做繫結 ?

startWork(getApplicationContext(),PushConstants.LOGIN_TYPE_API_KEY, PushApplication.API_KEY);// 無baidu帳號登入,以apiKey隨機獲取一個user id

User id是自動生成的還是客戶端設定的?

User id是通過startWork自動生成的.與之同時生成的還有channel id.

與伺服器訪問url?需要帶引數?

無賬號繫結後,app會在receive程式碼中獲取一系列引數(user id ,channel id等).

將這些資料與使用者名稱通過介面傳送到後臺(自己的介面).後臺再從百度雲那裡的服務端獲取所有使用者的userid遍歷,判斷推送.

接受推送通知的具體引數內容

 

Push呼叫url:

http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/api/list#push_msg

需要考慮問題

1.user id使用者的唯一標示的可更改性?

User id 必須與使用者名稱繫結才能準確的進行訊息推送.

登入之後,把使用者名稱跟裝置IMEI還是什麼了,或者百度返回的那個userid發給後臺,然後後臺再從百度雲那裡的服務端獲取所有使用者的userid遍歷,判斷推送.

實現細節

1.註冊百度應用賬戶,建立專案app,獲取API key

 

2.下載SDK 獲取jar包和.so檔案.匯入自己的專案

3.在清單檔案中註明API Key,方便後續呼叫.(也可在類中定義為常量)

 

Name=”api_key” value為在百度應用建立app時獲取的API key.

一共三個receiver一個service ,其中一個receiver為我們接受到資料需要處理的類:

4.定義廣播接受者繼承FrontiaPushMessageReceiver,接受Push訊息處理receiver。在此receiver中定義回撥函式.同時在清單檔案註冊.

5.Push必須的receviverservice宣告

        <receiver android:name="com.baidu.android.pushservice.PushServiceReceiver"

            android:process=":bdservice_v1">

            <intent-filter>

                <action android:name="android.intent.action.BOOT_COMPLETED" />

                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

                <action android:name="com.baidu.android.pushservice.action.notification.SHOW" />

                <action android:name="com.baidu.android.pushservice.action.media.CLICK" />

            </intent-filter>

        </receiver>

        <receiver android:name="com.baidu.android.pushservice.RegistrationReceiver"

            android:process=":bdservice_v1">

            <intent-filter>

                <action android:name="com.baidu.android.pushservice.action.METHOD" />

                <action android:name="com.baidu.android.pushservice.action.BIND_SYNC" />

            </intent-filter>

            <intent-filter>

                <action android:name="android.intent.action.PACKAGE_REMOVED"/>

                <data android:scheme="package" />

            </intent-filter>                   

        </receiver>

        <service

            android:name="com.baidu.android.pushservice.PushService"

            android:exported="true"

            android:process=":bdservice_v1" />

6.第一次登入app後開啟推送服務:這裡使用無賬號登入,”api_key”申請獲取唯一的

startWork(Context context, int loginType, String loginValue)三個引數:

1.上下文

2.登入方式

(一種有賬號登入,通過百度賬號登入.PushConstants.LOGIN_TYPE_ACCESS_TOKEN

另一種無賬號登入,通過api_key. PushConstants.LOGIN_TYPE_API_KEY,)

3.登入值,這裡是之前獲取的API_Key.

PushManager.startWork(getApplicationContext(),

PushConstants.LOGIN_TYPE_API_KEY, 

Utils.getMetaValue(PushDemoActivity.this, "api_key"));

7.如果您的工程中實現了Application的繼承類,那麼,您需要將父類改為com.baidu.frontia.FrontiaApplication

 如果您沒有實現Application的繼承類,那麼,請在AndroidManifest.xmlApplication標籤中增加屬性: 

 <application android:name="com.baidu.frontia.FrontiaApplication"

(如果不設定以上屬性會導致能收到訊息卻不能收到通知的情況)

8.設定通知的圖示樣式(可以不設定,不設定則使用系統預設的通知樣式);

後臺伺服器端呼叫百度雲介面:

1.查詢:

query_bindlist

功能

查詢裝置、應用、使用者與百度Channel的繫結關係。

HTTP請求方式

GET | POST

URL

http[s]://channel.api.duapp.com/rest/2.0/channel/{channel_id}

注意:

如果查詢的繫結關係與channel_id無關,則{channel_id}部分直接填寫channel即可。

2.push傳送推送

push_msg

功能

推送訊息,該介面可用於推送單個人、一群人、所有人以及固定裝置的使用場景。

HTTP請求方式

POST

URL

http[s]://channel.api.duapp.com/rest/2.0/channel/channel

關鍵引數:apikey ,user_id ,push_type(單個人,一群人,所有人) ,message_type(訊息,通知),messages(訊息內容).

 

簽到,任務數,之前的訊息機制不改變.在原來基礎上加上雲推送:

App程序不被殺死的情況下之前訊息機制的ok. 

如果App程序被殺,則需要考慮兩種情況:

1.App已經登入

2.App已經登出登入

登入賬戶成功:執行startWork方法    onbind服務

登出登入 :  執行stopWork方法     unonbind服務 

(之前的推送輪詢的只有經緯度獲取)

簽到:已經簽到則不再有訊息提醒;(只要App程序還在,則會一直輪詢檢查是否已經簽到,伺服器端也需要5[自定義]分鐘一輪詢).

新訊息任務以透傳訊息的方式傳送,訊息數,任務數.app獲取數量後和之前儲存的數量相對比.有新的則通知欄提醒,跳轉到app訊息任務主介面.( 如果app未登入則無法獲取使用者資訊?無法知道使用者用什麼賬號登入?)

傳送方式:android自定義欄位

"custom_content": {

    "key1":"value1", 

    "key2":"value2"

    }, 


相關推薦

--分析開發

一:優勢分析 百度雲推送,極光推送和個推各自的優勢是什麼? 極光推送功能優勢: 1、高效穩定的推送通知 為合作伙伴提供長連線SDK,開發者的服務訊息可以推送到其客戶端。使你的應用程式保持高注意力,即使使用者沒有開啟應用程式,也能夠推送通知到達使用者手機。您可以即時向用戶推

iOS開發-環境搭建

1.新增到SDK到工程中的步驟如下: • 將libBPush.a和BPush.h BPushCerResource.bundle新增到自己的工程下,新增時需要注意勾選當前Target • SDK需要以下庫:Foundation.framework、CoreTelephony.framework、lib

Android 入門篇

cep 控制臺 通過 esc port key 開發 manage class 轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/27231237如今app基本都有推送的功能。於是看了下百度雲的推送,官方文

iOS使用總結

由於專案中用到百度雲推送,這裡把填坑過程整理一下,以免別人也多走彎路。參考資料:百度Push服務SDK使用者手冊(iOS版) 百度雲推送SDK環境搭建 首先下載最新的SDK,下載地址 選擇iOS客戶端下載,這裡用的版本是1.5.4,需要先註冊一個百度賬戶才能下載的。 把標頭檔案B

伺服器端(php版)

<?php namespace Admin\Controller; use Think\Controller; use Org\Net; class AppController extends Controller{ private $appService;

Java後端實現安卓/IOS移動端訊息

本文主要介紹Java伺服器端如何藉助第三方推送平臺(百度雲推送)推送給移動端訊息。 使用案例介紹: 根據客戶的需求,需要做一個類似淘寶訊息推送的功能,客戶下訂單、訂單付款、訂單商品已發貨,以及客戶完成評論,都需要以訊息推送提示的方式告知商家和賣家這麼一個功能,由於之前沒有實現過這方面的功

API---AndroidDemo

雖然還沒有搞懂檔案上傳、下載、刪除的問題,先來學習一波下一次迭代可能會用到的百度雲推送API使用方式。測試截圖開發準備1:登陸百度雲賬號,註冊成為開發者賬號2:建立一個應用用於測試依次需要填寫的資訊有:應用名稱、應用包名、適配的機器(安卓或者ios)Tips:應用包名將會是你

----iOS

前言 記錄一下這幾天學習的百度推送,覺得這個東西弄的還挺糟心的,好多注意的地方 正文 1.先申請一個百度開發者賬號 http://push.baidu.com/fc 2.建立一個新應用,並應用配置 3.選擇蘋果的圖示,開發用就選擇開發狀態,上線就可以選擇生產狀態 4.此時就讓你上傳開發證書,這個上傳的檔案需

Android 利用REST API實現從客戶端

隨著谷歌開發者大會在中國的成功舉行,也帶來激動人心的訊息,2016年12月8日Google Developers中文網站正式釋出了。以後學習Android,獲取Android Studio、安卓最新版SDK等最新開發資源也變得更加輕鬆了。直接訪問Google Develop

javaSDK demo

百度雲推送巴拉巴拉巴拉 近階段由於PM同學的強烈要求,我們app服務端準備接入百度雲推送工程,那麼現在開始demo走起,本Demo主要是針對標籤推送。 下載百度雲推送SDK 網址:http://push.baidu.com/doc/j

整合之Maven方式

現在自己的產品沒有推送功能都不好意思出門啊! 前段時間做推送需求的時候,經過幾輪測試最後敲定的用百度雲推送。 百度雲推送整合非常方便,端上大概半天不到就搞定了,官網給的教程非常給力,詳細而又全面。 服務端的sdk也有非常詳細的示例,直接匯入相關jar就可以了,不過對於少部分

所需要注意的點

最近專案整合百度雲推送,整合很簡單但是用起來和其他推送有點不一樣。 控制檯推送和後臺推送有點不一樣。 ******需要我們自己自定義行為: 先看看安卓推送通知格式; Android通知格式 {"title":"hello","description":"hello w

Android第三方——極光,個

現在Android有不少的第三方推送介面,大大節省了我們的時間,讓我們專注於軟體本身的編寫。 極光推送 極光推送作為一個比較成熟的推送API,用起來是非常便利的,今天就來總結一下。 註冊賬號之後,首先建立一個應用,如下圖: 應用建立完成之後,會生成應用標識(AppKey)

cordova3.5整合PushNotification(1)

http://blog.csdn.net/mansai/article/details/19073913 選擇百度雲推送理由:專業、穩定、免費(Google GCM在國內有時無法正常使用) 第1步:註冊開發者賬戶並登入。 http://developer.baidu.com/

android客戶端的使用總結

在之前的一個專案中使用到了百度推送,以前對推送一無瞭解,現在把學習到的關於Android客戶端百度雲推送的知識分享一下 1.在配置檔案裡application中新增的程式碼: <!-- 此處Receiver名字修改為當前包名路徑 --> &l

自有賬戶體系對接必須要弄懂的問題

 同一個裝置上的同一個APP多次繫結返回的user_id相同,channel_id也相同。 同一個APP在不同的裝置上繫結user_id是不相同的,channel_id也不相同。 同一臺裝置對應唯一一個channel_id。(多個APP共用一條通道),所

Android 極光整合使用

極光新建應用 首先需要有極光賬號,在後臺新建應用 新建時會要求上傳app圖示和填寫app名字,然後需要完成推送設定 點選推送設定後出現android 與iOS的按鈕,點選android後填寫包名就好, 然後點選下載Demo來下載需要整合的控制元件

楊澤業:給你的網站添加自動頁面代碼

復制 push 自動 https rap width HP 百度 分享圖片 最近我的 博客添加了360的自動推送頁面代碼,今天瀏覽百度的官方文件裏面,也發現了,其實百度也是可以把你自己的網站內容自動推送到百度搜索引擎裏面,以方便更快的收錄。 看完了百度官方的介紹,也是和36

織夢加入主動程式碼

今天和大家分享的是關於織夢建站的連結推送例項,例如:你釋出了一篇新文章,等著百度來抓取,那就很被動,不知道什麼時候才能被收錄;但是我們可以主動去推送,下邊我們具體來操作說明。  第一步:首先在織夢的後臺新增2個變數。 1.新增cfg_badutoken系統變數 說明:這個

使用ASP語言向主動網址的方法和經驗分享

最近在網站SEO優化中接觸到了百度站長平臺中的向百度主動推送網址的功能。百度開放了API介面給站長,以便廣大站長進行呼叫,主動推送網址。可是百度給出的API呼叫示例沒有ASP語言的,經過搜尋相關文章,找到了前人探索出的用ASP呼叫API主動推送網址的方法,不過在按照網友分享的