自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

百度云推送應(yīng)用場(chǎng)景

移動(dòng)開(kāi)發(fā)
開(kāi)發(fā)者向應(yīng)用的特定終端或特定用戶(hù)推送消息。 特定終端對(duì)于應(yīng)用來(lái)說(shuō),就是安裝了應(yīng)用的一臺(tái)具體的設(shè)備。 而一個(gè)用戶(hù)可能有多個(gè)端,在某些應(yīng)用場(chǎng)景下,我們希望消息是針對(duì)用戶(hù)的——應(yīng)用的同一個(gè)用戶(hù)在他的所有終端上都能收到消息,這時(shí)候我們就需要向特定用戶(hù)推送消息。

1.名詞解釋

API Key - 應(yīng)用標(biāo)識(shí),終端上的綁定和服務(wù)端推送消息時(shí)都要用到。

Secret Key - 應(yīng)用私鑰,服務(wù)端推送消息時(shí)用到。

app id - 應(yīng)用ID,就是百度開(kāi)發(fā)者中心的應(yīng)用基本信息中的應(yīng)用ID??蛻?hù)端綁定調(diào)用返回值中可獲得。

channel id - 推送通道ID,通常指一個(gè)終端,如一臺(tái)android系統(tǒng)手機(jī)??蛻?hù)端綁定調(diào)用返回值中可獲得。

user id - 應(yīng)用的用戶(hù)ID,一個(gè)應(yīng)用在多個(gè)端可以都屬于同一用戶(hù)。user id和channel id配合可以唯一指定一個(gè)應(yīng)用的特定終端。如果應(yīng)用不是基于百度賬戶(hù)的賬戶(hù)體系,單獨(dú)用user就通常指定了一個(gè)應(yīng)用的特定終端。客戶(hù)端綁定調(diào)用返回值中可獲得。

2.單播消息推送

描述

開(kāi)發(fā)者向應(yīng)用的特定終端或特定用戶(hù)推送消息。 特定終端對(duì)于應(yīng)用來(lái)說(shuō),就是安裝了應(yīng)用的一臺(tái)具體的設(shè)備。 而一個(gè)用戶(hù)可能有多個(gè)端,在某些應(yīng)用場(chǎng)景下,我們希望消息是針對(duì)用戶(hù)的——應(yīng)用的同一個(gè)用戶(hù)在他的所有終端上都能收到消息,這時(shí)候我們就需要向特定用戶(hù)推送消息。

解決思路

(1)向應(yīng)用的特定終端推送消息

一個(gè)channel id指定一個(gè)終端,因此在這種需求下,開(kāi)發(fā)者需要通過(guò)服務(wù)端API,向一個(gè)特定channel id推送消息。在推送之前,客戶(hù)端應(yīng)用通過(guò)綁定接口的返回值獲取到channel id,并通過(guò)網(wǎng)絡(luò)等手段發(fā)送給開(kāi)發(fā)者,開(kāi)發(fā)者需自行維護(hù)channel id。

例如,Android客戶(hù)端,在調(diào)用了startWork之后,自定義消息 receiver將會(huì)收到返回值,其中包含了channel id、user id等信息。

(2)向應(yīng)用的特定用戶(hù)推送消息

云推送用user id來(lái)表示用戶(hù),因此在這種需求下,開(kāi)發(fā)者需要通過(guò)服務(wù)端API,向一個(gè)特定user id推送消息。和channel id獲取方式類(lèi)似,客戶(hù)端應(yīng)用通過(guò)綁定接口的返回值獲取到user id。開(kāi)發(fā)者需要自行維護(hù)user id。

應(yīng)用場(chǎng)景舉例

在線(xiàn)問(wèn)答應(yīng)用。用戶(hù)A用手機(jī)發(fā)表一個(gè)問(wèn)題,問(wèn)題的解答并不是實(shí)時(shí)的。假設(shè)在第二天用戶(hù)B發(fā)表了第一個(gè)解答,這時(shí)需要將答案單獨(dú)推送給A。

解決方案

用戶(hù)A發(fā)表問(wèn)題時(shí),記錄問(wèn)題id及其對(duì)應(yīng)的A的user id(或channel id)。用戶(hù)B發(fā)表解答時(shí),通過(guò)服務(wù)端API向問(wèn)題id對(duì)應(yīng)的user id(或channel id)推送解答。

3.用戶(hù)分組的消息推送

描述

開(kāi)發(fā)者向應(yīng)用的符合特定分類(lèi)條件的若干用戶(hù)的集合推送消息。廣播是分組推送的特例,它向應(yīng)用的所有用戶(hù)(同時(shí)也是所有端)推送消息。

解決思路

云推送通過(guò)Tag(標(biāo)簽)這種技術(shù)方式來(lái)實(shí)現(xiàn)用戶(hù)分組的功能。例如,對(duì)于分類(lèi)信息的應(yīng)用,一個(gè)用戶(hù)觀(guān)看了體育欄目,就給該用戶(hù)打一個(gè)Tag——sport。6月的某一天NBA總決賽熱火奪冠了,則向sport這個(gè)Tag推送一條及時(shí)的奪冠新聞。

Tag的設(shè)置有兩種方法:

(1)客戶(hù)端設(shè)置

這是最常見(jiàn)的設(shè)置方式,因?yàn)楹陀脩?hù)直接交互的客戶(hù)端最真實(shí)的收集了用戶(hù)的喜好、習(xí)慣等信息。這些信息往往是用戶(hù)分組的依據(jù)。在客戶(hù)端程序中,一旦用戶(hù)觸發(fā)了開(kāi)發(fā)者預(yù)先設(shè)定的分組條件(如:觀(guān)看了體育欄目,設(shè)置了年齡,團(tuán)購(gòu)了電影票等),則調(diào)用客戶(hù)端API進(jìn)行Tag設(shè)置(對(duì)應(yīng)的Tag:sport,80s,movie),如Android端的setTags接口。

(2)服務(wù)端設(shè)置

如果開(kāi)發(fā)者自己維護(hù)了用戶(hù)的分組信息,或者存在已發(fā)布的還不具備某分組設(shè)置功能的終端版本,也可以通過(guò)服務(wù)端API給特定用戶(hù)設(shè)置Tag,如PHP接口setTag。

廣播功能和Tag無(wú)關(guān),不需要開(kāi)發(fā)者進(jìn)行分組的任何操作就已經(jīng)具備。

推送Tag消息的方法:

(3)通過(guò)管理控制臺(tái)推送

若要推送廣播消息,選中上圖中的所有人即可。

(4)通過(guò)服務(wù)端API推送

如PHP接口

 

  1. public function pushMessage ( 
  2. $push_type
  3. $messages
  4. $message_keys
  5. $optional = NULL ) 

 

push_type為2,且正確設(shè)置tag_name 參數(shù)。詳情參考PHP-SDK使用手冊(cè)。

應(yīng)用場(chǎng)景舉例

閱讀應(yīng)用。對(duì)不同閱讀喜好的人群推送不同類(lèi)別的新圖書(shū)廣告。

解決方案

應(yīng)用提供喜好設(shè)置頁(yè)面,用戶(hù)勾選不同的類(lèi)別,觸發(fā)對(duì)應(yīng)Tag的設(shè)置?;蛘哂脩?hù)閱讀了某個(gè)類(lèi)別的圖書(shū),觸發(fā)對(duì)應(yīng)Tag的設(shè)置。在服務(wù)端,給特定類(lèi)別圖書(shū)的Tag推送新書(shū)廣告。

4.使用自己的賬戶(hù)系統(tǒng)或百度賬戶(hù)

描述

開(kāi)發(fā)者可以使用自己的賬戶(hù)體系開(kāi)發(fā)應(yīng)用,或者應(yīng)用就是無(wú)賬戶(hù)的。開(kāi)發(fā)者也可選擇使用百度賬戶(hù)作為應(yīng)用賬戶(hù)系統(tǒng)的接入。

解決思路

(1)使用自己的賬戶(hù)系統(tǒng)或者無(wú)賬戶(hù)系統(tǒng)

這兩種情況,云推送都是無(wú)法理解賬戶(hù)信息的,所以對(duì)于云推送來(lái)說(shuō)都屬于無(wú)賬戶(hù)體系。
云推送通過(guò)終端標(biāo)識(shí)(channel id)和應(yīng)用標(biāo)識(shí)(APIKey)來(lái)唯一確定一個(gè)應(yīng)用的一個(gè)特定端。應(yīng)用的每個(gè)端都是不同的用戶(hù),擁有不同的user id。 客戶(hù)端的綁定方式,用Android API舉例:

PushManager.startWork(Context, LOGIN_TYPE_API_KEY, apiKey)

(2)使用百度賬戶(hù)系統(tǒng)

云推送和百度賬戶(hù)系統(tǒng)是連通的,應(yīng)用的所有用戶(hù)將使用百度的user id作為唯一標(biāo)識(shí)。不同的端使用同一個(gè)用戶(hù)百度賬戶(hù)登錄,獲得的user id是一樣的。這種方式可以實(shí)現(xiàn)對(duì)用戶(hù)的多個(gè)端做消息推送。
百度賬戶(hù)的客戶(hù)端綁定使用用戶(hù)AccessToken作為驗(yàn)證憑證,用戶(hù)AccessToken的獲得需要百度賬戶(hù)登錄界面的輔助,具體使用可以參看客戶(hù)端SDK demo或者百度賬號(hào)連接官方文檔。
同樣的,客戶(hù)端的綁定方式,用Android API舉例:

PushManager.startWork(Context, LOGIN_TYPE_ACCESS_TOKEN, UserAccessToken)

(2) 百度賬號(hào)連接官方文檔

5.單服務(wù)單通道的端上實(shí)現(xiàn)

云推送的Android SDK,是通過(guò)后臺(tái)service和socket長(zhǎng)連接機(jī)制來(lái)實(shí)現(xiàn)的。從消息時(shí)效性、耗電量、網(wǎng)絡(luò)流量等因素考慮,這是目前最好的實(shí)現(xiàn)方式。

在同一臺(tái)設(shè)備安裝了多個(gè)使用推送的應(yīng)用的情況下,如果每個(gè)應(yīng)用都執(zhí)行獨(dú)立的后臺(tái)service,且各自建立獨(dú)立的長(zhǎng)連接,這無(wú)疑是系統(tǒng)資源的巨大浪費(fèi)。內(nèi)存使用、耗電量、網(wǎng)絡(luò)流量等關(guān)鍵因素都將以接近與應(yīng)用數(shù)正比的倍數(shù)增長(zhǎng)。

在這個(gè)背景下,云推送實(shí)現(xiàn)了單服務(wù)單通道的機(jī)制。同一臺(tái)設(shè)備上,云推送服務(wù)的資源消耗不受集成該服務(wù)的應(yīng)用數(shù)量影響。任何時(shí)刻,只會(huì)運(yùn)行一個(gè)后臺(tái)service和維持一個(gè)socket長(zhǎng)連接。

應(yīng)用的初始化、tag等接口調(diào)用,將通過(guò)intent方式發(fā)送到后臺(tái)運(yùn)行的service處理。service接收到推送消息時(shí),將根據(jù)消息中指定的發(fā)送對(duì)象,通過(guò)intent,以指定目標(biāo)應(yīng)用包名的方式,發(fā)送私有消息給應(yīng)用。應(yīng)用無(wú)法接收到不屬于自己的消息,也無(wú)法通過(guò)冒充截獲。

示意圖:

 

責(zé)任編輯:閆佳明 來(lái)源: 51CTO
相關(guān)推薦

2013-07-01 16:36:26

百度云推送免費(fèi)云推送移動(dòng)開(kāi)發(fā)

2014-07-25 17:12:39

數(shù)據(jù)庫(kù)WOT2014MongoDB

2013-10-10 16:28:16

百度云推送免費(fèi)云推送移動(dòng)開(kāi)發(fā)

2013-03-11 10:26:37

百度云MTC

2016-10-13 15:19:34

百度

2012-05-28 22:51:53

百度

2013-07-15 16:43:53

百度云百度云Push云推送

2013-07-16 15:05:03

云推送極光推送

2012-10-19 09:47:30

百度云百度音樂(lè)云計(jì)算

2013-06-27 10:23:30

百度云百度開(kāi)放云

2012-05-24 13:55:02

XML

2013-04-08 15:19:53

百度云百度

2017-04-28 17:44:45

百度

2018-09-06 18:37:45

百度云

2015-07-29 16:49:47

百度

2012-03-23 12:12:37

百度開(kāi)發(fā)者大會(huì)

2013-10-12 10:25:20

百度云 Cooliris

2013-08-22 17:08:50

2017-09-27 15:03:00

百度云云計(jì)算加速
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)