推送 從入門到放棄

推送

推送簡(jiǎn)直就是一種輕量級(jí)的騷擾方式

自從有了推送今布,各個(gè)公司基本上都在使用推送闻蛀,這確實(shí)是一個(gè)比較好的提醒方式仙蛉,Android較iOS強(qiáng)的一個(gè)部分,也就是在于Android的Notification冠息。Google教育我們利用好Android的通知模塊,做更多友好的交互孕索,可這句話逛艰,翻譯成中文,不知不覺(jué)搞旭,就變成了在Notification中推送各種廣告散怖,而且僅僅就是一些廣告,Notification各種牛逼的功能肄渗,完全不需要镇眷,這也違背了Google設(shè)計(jì)Notification的初衷。

更關(guān)鍵的是翎嫡,現(xiàn)在隨便找一款A(yù)pp欠动,沒(méi)有推送的真是鳳毛麟角,更可惡的是,做外賣的App給我推送奧運(yùn)新聞具伍,一條新聞十幾個(gè)App推送翅雏,以至于現(xiàn)在很多用戶都非常反感各種推送廣告,就我本人而言人芽,基本上會(huì)禁用所有廣告類的App的推送望几。

本人非常反感推送,借用王思聰?shù)囊痪湓捰┨琗XX App天天給我推送各種廣告橄抹,還TM是自己做的推送,真是絕了惕味。

推送方案

輪詢

輪詢是最簡(jiǎn)單的與服務(wù)器保持通信的方式楼誓,即循環(huán)向服務(wù)器通信。這個(gè)方案的特點(diǎn)就是通信由客戶端主動(dòng)發(fā)起赦拘,你需要自己實(shí)現(xiàn)輪詢消息隊(duì)列慌随、頻率等等參數(shù),在功耗和效果間做權(quán)衡躺同,類似于TCP的短連接阁猜。

SMS

這個(gè)其實(shí)就是借助短信來(lái)實(shí)現(xiàn)信息的展示,只不過(guò)把短信內(nèi)容展示到了Notification中蹋艺,這個(gè)方案剃袍,到達(dá)率確實(shí)高,畢竟短信是比較可靠捎谨、穩(wěn)定的民效,但劣勢(shì)也很明顯,就是成本很高涛救,而且在Android平臺(tái)上畏邢,短信的權(quán)限比較開放,容易被劫持检吆。

長(zhǎng)連接

長(zhǎng)連接和前面提到的短連接舒萎,都是基于Socket連接的方式,他們的區(qū)別在與蹭沛,短連接是每次數(shù)據(jù)傳輸完畢后就斷開連接臂寝,而長(zhǎng)連接不會(huì)。所以摊灭,基于輪詢的方式咆贬,每次都要進(jìn)行鏈路的連接,性能消耗更大帚呼,基于長(zhǎng)連接的方式掏缎,就是對(duì)這點(diǎn)的改進(jìn)。應(yīng)用一旦與服務(wù)器連接成功,并不會(huì)主動(dòng)斷開連接御毅,后面的通信都基于這個(gè)通道根欧。目前大部分的推送服務(wù)都是基于長(zhǎng)連接的推送,在后臺(tái)維護(hù)一個(gè)Service端蛆,維持應(yīng)用與服務(wù)端之間的TCP長(zhǎng)連接凤粗。

推送方案

iOS

iOS這邊使用系統(tǒng)統(tǒng)一的APNs,所有推送消息都由蘋果的服務(wù)器進(jìn)行下發(fā)今豆,同時(shí),也由系統(tǒng)進(jìn)行統(tǒng)一展示和處理呆躲。

GCM

與iOS一樣异逐,Android同樣有一套內(nèi)置的推送方案,但很可惜的是插掂,Google的服務(wù)在中國(guó)大陸無(wú)法使用灰瞻,草了個(gè)蛋。

第三方推送服務(wù)

專業(yè)的第三方推送

  • 極光
  • 個(gè)推
  • 友盟推送

手機(jī)ROM廠商推送

  • 華為推送
  • 小米推送

BAT級(jí)別的全家桶

  • 阿里推送
  • 信鴿推送
  • 百度推送

關(guān)于第三方推送服務(wù)在各個(gè)App中的使用率辅甥,大家可以參考賈吉鑫的這篇文章:
https://mp.weixin.qq.com/s?__biz=MzA5OTMxMjQzMw==&mid=2648112527&idx=1&sn=b23c1b5f3e32e343ad96d705bd4d63ff

第三方推送注意

這些推送服務(wù)大同小異酝润,基本上一家使用了一個(gè)新功能,另外幾家璃弄,也會(huì)很快推出這個(gè)功能要销,就例如之前比較火的,『共享推送通道進(jìn)行App喚醒』這個(gè)技術(shù)夏块,友盟疏咐、個(gè)推推出后,很快其它推送服務(wù)商就支持了脐供,所以開發(fā)者并不需要擔(dān)心哪一家推送功能比較強(qiáng)浑塞。

這里還需要說(shuō)下現(xiàn)在的『推送喚醒』這樣一個(gè)功能,簡(jiǎn)單的說(shuō)政己,就是所有安裝了A推送的App酌壕,只要有一個(gè)還活著,就可以把其它安裝了A推送的App拉起來(lái)匹颤,從而提高推送的到達(dá)率。有些阿里系托猩、百度系的App印蓖,被大家稱作『全家桶』,實(shí)際上就是因?yàn)檫@個(gè)原因京腥,這個(gè)方式赦肃,確實(shí)能在一定程度上提高推送到達(dá)率,但另一方面,也破壞了Android生態(tài)他宛,增加了功耗船侧,打亂了系統(tǒng)的清理策略。

另外厅各,小米推送镜撩、華為推送葛作,大家接入的原因可能很簡(jiǎn)單淘这,就是他們的手機(jī)市場(chǎng)占有率比較高,接入他們自家的推送腾供,可以在一定程度上提高到達(dá)率憔古,但需要注意的是遮怜,推送分為透?jìng)骱头峭競(jìng)鲀煞N方式,透?jìng)骷次覀冏约篈pp處理推送消息鸿市,而非透?jìng)骶饬海瑒t是交給相應(yīng)的PushSDK處理,對(duì)于小米推送焰情、華為推送來(lái)說(shuō)陌凳,只有采用非透?jìng)飨ⅲ竭_(dá)率采用保證烙样,而透?jìng)飨⒎胨欤c其它推送并沒(méi)有什么區(qū)別,換句話說(shuō)谒获,小米手機(jī)蛤肌、華為手機(jī),只對(duì)非透?jìng)鞯耐扑拖⒆隽丝煽啃员WC批狱,但非透?jìng)飨⒌恼故靖袷椒浅9潭阕肌⒑?jiǎn)單,且不能自定義赔硫,這是一個(gè)很大的問(wèn)題炒俱,這點(diǎn)應(yīng)該是很多開發(fā)者的誤區(qū)。

最后爪膊,很多推送服務(wù)都需要在Application中進(jìn)行初始化权悟,同時(shí),各種被喚醒策略推盛,又會(huì)拉起Application峦阁,導(dǎo)致推送進(jìn)程的重復(fù),所以耘成,這里經(jīng)常需要對(duì)進(jìn)程名進(jìn)行過(guò)濾榔昔,非主進(jìn)程驹闰,不進(jìn)行初始化。

自建推送服務(wù)

基本都是基于AndroidPN撒会、MQTT嘹朗、XMPP、長(zhǎng)連接這些方式去實(shí)現(xiàn)的诵肛,自己搭建Push平臺(tái)服務(wù)屹培,一個(gè)最大的問(wèn)題就是服務(wù)端的架構(gòu)設(shè)計(jì),不僅成本高曾掂,而且效果不一定好惫谤,建議中小企業(yè)不要輕易嘗試。

推送名詞解釋

RegistrationID\ClientID

一般來(lái)說(shuō)珠洗,類似這類ID都是用于唯一標(biāo)識(shí)應(yīng)用\用戶的溜歪,每個(gè)App在每臺(tái)手機(jī)上都會(huì)生成一個(gè)唯一ID。

RegistrationID\ClientID生成規(guī)則

Android平臺(tái)上因?yàn)閲?guó)內(nèi)存在大量山寨設(shè)備许蓖,所以很多設(shè)備的IMEI蝴猪、Mac地址、AndroidID 都有可能為空或者錯(cuò)誤膊爪,所以不能單獨(dú)作為唯一標(biāo)識(shí)自阱,需要將這些進(jìn)行組合起來(lái)使用。

對(duì)于應(yīng)用卸載后RegistrationID的問(wèn)題米酬,很多PushSDK的策略是沛豌,生成一個(gè)DeviceID保存到本地存儲(chǔ),應(yīng)用被卸載后如果被重新安裝赃额,如果檢測(cè)到存儲(chǔ)里的DeviceID還在的話加派,就判定是同一個(gè)設(shè)備,不重新生成RegistrationID跳芳。

AppKey\AppID

這些Key基本都是用于驗(yàn)證App的芍锦,每個(gè)包名對(duì)應(yīng)一個(gè)加密的Key。

透?jìng)鱘非透?jìng)?/h3>

非透?jìng)飨⑹侵竿扑拖⒈籔ushSDK獲取并處理飞盆,透?jìng)飨⑹侵竿扑拖⒈籔ushSDK交給宿主應(yīng)用處理娄琉,非透?jìng)飨⑼ǔV荒茉O(shè)置一些固定的樣式,比較簡(jiǎn)單吓歇,而透?jìng)飨⒛跛梢杂葾pp自定義處理,比較靈活城看。

推送數(shù)據(jù)基礎(chǔ)

累計(jì)注冊(cè)

通過(guò)應(yīng)用使用的appid統(tǒng)計(jì)用戶注冊(cè)總量女气。

日在線用戶

通過(guò)應(yīng)用使用的appid統(tǒng)計(jì)當(dāng)天的在線用戶數(shù)。

活躍用戶

通過(guò)應(yīng)用使用的appid統(tǒng)計(jì)當(dāng)天在推送平臺(tái)激活過(guò)的用戶總數(shù)析命。

在線下發(fā)率

在線消息下發(fā)數(shù)/總下發(fā)數(shù)主卫。

回執(zhí)率

消息回執(zhí)數(shù)(去重)/消息在線下發(fā)數(shù)。

到達(dá)率

到達(dá)數(shù)/實(shí)際下發(fā)數(shù)鹃愤。

百日內(nèi)聯(lián)網(wǎng)用戶數(shù)(可推送用戶數(shù))

是指最近三個(gè)月內(nèi)有登錄過(guò)(設(shè)備與推送服務(wù)端建立長(zhǎng)鏈接)的設(shè)備總數(shù)簇搅,即有效可下發(fā)的用戶數(shù)。一般的推送服務(wù)端認(rèn)為软吐,設(shè)備在100天內(nèi)沒(méi)有登錄請(qǐng)求瘩将,認(rèn)為該設(shè)備已經(jīng)失效,所以無(wú)需再次發(fā)送凹耙。

實(shí)際下發(fā)數(shù)

實(shí)際可推送設(shè)備數(shù)(在消息有效期內(nèi)姿现,有聯(lián)網(wǎng)并推送進(jìn)程正常的設(shè)備,即消息有效期內(nèi)的在線下發(fā)數(shù)肖抱。消息有效期就是設(shè)置的離線時(shí)間)备典。

到達(dá)數(shù)

客戶端SDK接收到消息的設(shè)備數(shù)(通過(guò)統(tǒng)計(jì)客戶端SDK接收到消息后的回執(zhí)獲得)。

展示數(shù)

用自定義非透?jìng)飨⒃谟脩羰謾C(jī)展示過(guò)的設(shè)備數(shù)意述。

點(diǎn)擊數(shù)

點(diǎn)擊通知欄消息的設(shè)備數(shù)提佣。

推送數(shù)據(jù)分析

那么關(guān)于推送,大家實(shí)際上最關(guān)系的荤崇,就是『到達(dá)率』拌屏。那么這個(gè)到達(dá)率究竟怎么計(jì)算呢?

首先我們舉個(gè)例子來(lái)說(shuō)明上面的這些數(shù)據(jù)背后的實(shí)際意義术荤,例如倚喂,我們有一款A(yù)pp,有100w的下載量瓣戚,每個(gè)App啟動(dòng)后端圈,都將上報(bào)給服務(wù)器一個(gè)唯一ID,所以带兜,累計(jì)注冊(cè)量就是100w枫笛,也稱發(fā)送總量。

那么在服務(wù)端準(zhǔn)備發(fā)送推送的時(shí)候刚照,當(dāng)前手機(jī)端推送進(jìn)程還活著的刑巧,也就是說(shuō)推送的長(zhǎng)連接還健在的,就是在線設(shè)備无畔,如果按天算啊楚,那么就叫日在線設(shè)備數(shù),我們假設(shè)這個(gè)數(shù)字是60w浑彰。

OK恭理,推送發(fā)出去后,客戶端收到推送消息郭变,并產(chǎn)生回執(zhí)颜价,代表完成了一次推送涯保,假設(shè)這些完成推送的設(shè)備是55w,這個(gè)就是送達(dá)設(shè)備數(shù)周伦。一般來(lái)說(shuō)夕春,只要設(shè)備在線,基本都能送達(dá)专挪,所以這個(gè)數(shù)字和在線設(shè)備數(shù)非常接近及志,不接近的話,這個(gè)推送基本就有問(wèn)題了寨腔,其中可能送不達(dá)的原因就在于網(wǎng)絡(luò)切換等導(dǎo)致長(zhǎng)連接斷掉這類因素速侈。

那么到這里,一般的推送服務(wù)商會(huì)使用送達(dá)設(shè)備數(shù)/在線設(shè)備數(shù)的方式來(lái)計(jì)算到達(dá)率迫卢,當(dāng)然倚搬,前面我們也說(shuō)了,這個(gè)比例一定是很高的乾蛤,如果保持長(zhǎng)連接的設(shè)備都不能收到推送潭枣,那一定是有問(wèn)題了。

而一般的到達(dá)率幻捏,應(yīng)該是送達(dá)設(shè)備數(shù)/可送達(dá)設(shè)備數(shù)盆犁,也就是百日內(nèi)活躍的設(shè)備數(shù),這樣一除篡九,這個(gè)比例一下子就小了很多谐岁,因?yàn)檎l(shuí)也不知道,這一百天內(nèi)曾經(jīng)活躍的用戶榛臼,第二天是不是就已經(jīng)把你卸載了伊佃。所以說(shuō),Android下統(tǒng)計(jì)推送的到達(dá)率一般都很低沛善,而推送服務(wù)商宣傳的到達(dá)率都很高航揉,這其實(shí)就是一個(gè)偷換概念的問(wèn)題,我們說(shuō)的是一般的到達(dá)率金刁,而服務(wù)商宣傳的是在線到達(dá)率帅涂。

而且,這個(gè)到達(dá)率與iOS完全沒(méi)有可比性尤蛮,因?yàn)閕OS統(tǒng)一通過(guò)APNs來(lái)進(jìn)行推送媳友,且無(wú)法獲取到達(dá)回執(zhí),所以产捞,iOS基本不存在到達(dá)率這一說(shuō)法醇锚,如果有,幾乎也是100%坯临,完全沒(méi)有意義焊唬,所以恋昼,如果哪一天有產(chǎn)品或者運(yùn)營(yíng)跟你說(shuō),為什么Android的到達(dá)率比iOS的到達(dá)率差這么多赶促,請(qǐng)毫不客氣的砸它一斤蘋果焰雕。

Tag\Alias

Tag

Tag,或者叫標(biāo)簽芳杏,是用戶的一種屬性,在給某些用戶設(shè)置某類標(biāo)簽后就可以針對(duì)推送辟宗。比如給喜歡『編程』的人打上『編程』的標(biāo)簽爵赵,就可以只給他們精準(zhǔn)推送。

通常情況下泊脐,一個(gè)設(shè)備(在一個(gè)App里)可以設(shè)置多個(gè)標(biāo)簽空幻。標(biāo)簽與別名類似,其對(duì)應(yīng)關(guān)系也是保存在推送服務(wù)器側(cè)的容客。

Alias

Alias秕铛,或者叫別名,是對(duì)已經(jīng)安裝某應(yīng)用的用戶取個(gè)別名進(jìn)行標(biāo)識(shí)缩挑,在對(duì)該用戶消息推送時(shí)但两,就可以用此別名來(lái)進(jìn)行推送。設(shè)置了別名后供置,推送時(shí)服務(wù)器端指定別名即可谨湘。推送服務(wù)器端來(lái)把別名轉(zhuǎn)化到設(shè)備ID來(lái)找到設(shè)備。

Tag和Alias他們的共同點(diǎn)在于芥丧,提供對(duì)用戶的精確推送紧阔。

1.png

推送原理

目前大部分的第三方推送服務(wù),都是基于長(zhǎng)連接的推送方案续担,下面將對(duì)這個(gè)方式進(jìn)行詳細(xì)講解擅耽。

NAT

首先,我們需要了解下一個(gè)網(wǎng)絡(luò)基本知識(shí)——NAT物遇,即網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation乖仇,NAT),這是因?yàn)镮P地址是有限的询兴,手機(jī)無(wú)論是通過(guò)路由器還是數(shù)據(jù)網(wǎng)絡(luò)这敬,都有一個(gè)內(nèi)網(wǎng)IP地址,同時(shí)蕉朵,路由器上會(huì)維護(hù)一個(gè)外網(wǎng)IP地址崔涂,從而形成一個(gè)NAT路由表,即內(nèi)網(wǎng)IP地址:端口始衅,以及對(duì)應(yīng)的外網(wǎng)IP地址:端口冷蚂。這樣通過(guò)一層層封裝與解封裝缭保,就達(dá)到了內(nèi)網(wǎng)與外網(wǎng)交換通信的方式。

NAT超時(shí)

由于NAT路由表的大小有效蝙茶,所以一般路由都有NAT有效期艺骂,WIFI下,這個(gè)NAT有效期可能會(huì)比較長(zhǎng)隆夯,而在數(shù)據(jù)流量下钳恕,運(yùn)營(yíng)商一般都會(huì)盡快更新NAT路由表,淘汰無(wú)效的設(shè)備蹄衷,所以忧额,在使用數(shù)據(jù)流量時(shí),長(zhǎng)連接經(jīng)常容易斷愧口。

那么除了NAT路由表主動(dòng)淘汰過(guò)期的設(shè)備之外睦番,切換網(wǎng)絡(luò)環(huán)境和DHCP服務(wù)器租期到期,這些情況都有可能導(dǎo)致NAT路由表改變耍属,從而造成長(zhǎng)連接中斷托嚣。

心跳包

前面我們說(shuō)了,現(xiàn)在的推送服務(wù)一般采用的是長(zhǎng)連接的通信方式厚骗,而長(zhǎng)連接會(huì)因?yàn)镹AT路由表的更新而中斷示启,所以,客戶端會(huì)定時(shí)向服務(wù)端發(fā)送一個(gè)心跳包领舰,來(lái)定期告知NAT路由表丑搔,我還活著,別殺我提揍!這就是心跳包的作用——防止NAT路由表超時(shí)啤月,同時(shí)檢測(cè)連接是否被斷開。

心跳包的心跳時(shí)間

既然心跳包的作用是防止NAT超時(shí)劳跃,那么就需要將心跳包的發(fā)送頻率設(shè)置為小余NAT超時(shí)的檢測(cè)頻率谎仲,而WIFI和數(shù)據(jù)流量下,對(duì)于NAT路由表的超時(shí)時(shí)間又是不一樣的刨仑,而且不同的網(wǎng)絡(luò)運(yùn)營(yíng)商的超時(shí)時(shí)間郑诺,甚至都不一樣,所以杉武,一個(gè)比較好的方法就是根據(jù)設(shè)備當(dāng)前網(wǎng)絡(luò)環(huán)境辙诞,來(lái)動(dòng)態(tài)的設(shè)置心跳時(shí)間。

注意轻抱,心跳包與輪詢是不一樣的飞涂,心跳包建立在長(zhǎng)連接上,只要發(fā)送數(shù)據(jù)即可,而輪詢每次都是一個(gè)完整的TCP連接较店。

心跳包誰(shuí)來(lái)發(fā)

既然需要定時(shí)任務(wù)士八,那么就需要使用AlarmManager來(lái)作定時(shí)喚醒了,原因我之前的文章有講過(guò)梁呈,是關(guān)于處理器喚醒的原因婚度,這里就不贅述了,大家可以參考我之前的文章:

http://mp.weixin.qq.com/s?__biz=MzAxNzMxNzk5OQ==&mid=2649484680&idx=1&sn=bd9086a95b769af8d8644cf681ce66ec#rd

進(jìn)程惫倏ǎ活

所謂進(jìn)程被茸拢活,是指App希望盡可能的保證自己的App的推送進(jìn)程能夠存活在后臺(tái)寻咒,以保證可以收到服務(wù)端的推送消息哮翘,因此,才出現(xiàn)了一大批關(guān)于進(jìn)程弊猩活的方式,例如NDK層的文件鎖粘舟,fork子進(jìn)程熔脂、前臺(tái)服務(wù)、進(jìn)程優(yōu)先級(jí)等等方式柑肴,然而霞揉,這些東西,實(shí)際上晰骑,都不能完全保證手機(jī)的進(jìn)程管理策略放過(guò)你适秩,特別是Android 5.0以后的系統(tǒng),Android對(duì)進(jìn)程的管理更加嚴(yán)格硕舆,還有國(guó)內(nèi)的這些ROM層的修改秽荞,ROM想要?dú)⒛氵@個(gè)進(jìn)程,你怎么做也沒(méi)有辦法抚官,哦扬跋,除了白名單。所以凌节,不要再花心思去找什么進(jìn)程鼻仗活的黑科技了,好好做好應(yīng)用倍奢,提供用戶的使用黏性朴上,才是最佳的保活卒煞,而對(duì)于一些產(chǎn)品痪宰、運(yùn)營(yíng)所謂的『為什么微信、QQ都可以保活』這樣的問(wèn)題酵镜,我建議你回答它:『如果你能把產(chǎn)品做到微信碉碉、QQ那樣的數(shù)量級(jí),我也能讓你活淮韭!』

推送整合方案

介于各種第三方推送與ROM推送的特點(diǎn)垢粮,我們目前采用的推送方案,名為『UniversalPushSDK』靠粪,即整合了多個(gè)不同的推送渠道蜡吧,通過(guò)模板設(shè)計(jì)模式來(lái)進(jìn)行整合,并向外暴露統(tǒng)一的接口占键,這種方式的好處在于UniversalPushSDK利用的各個(gè)不同推送特點(diǎn)昔善,提高推送到達(dá)率,但是壞處在于畔乙,包的體積會(huì)大一些君仆。例如,我們現(xiàn)在整合了『小米推送牲距、極光推送返咱、華為推送』,在系統(tǒng)啟動(dòng)的時(shí)候牍鞠,判斷當(dāng)前系統(tǒng)咖摹,如果是小米系統(tǒng),則啟用『小米推送』难述,如果是華為手機(jī)萤晴,則啟用『華為推送』,其它的Android設(shè)備胁后,則啟用『極光推送』店读,通過(guò)這種方式來(lái)設(shè)計(jì)我們自己的推送SDK,可以在一定程度上攀芯,利用好各個(gè)推送平臺(tái)的特性两入。

那么如果利用這種方式來(lái)設(shè)計(jì)SDK給到不同的App接入,就需要能夠?qū)?yīng)用的推送Key做到動(dòng)態(tài)配置敲才,這也是我們遇到的最大的一個(gè)問(wèn)題裹纳,解決方法大家可以參考我之前寫的一篇文章:

http://blog.csdn.net/eclipsexys/article/details/51283232

雖然我極力反對(duì)這種方案,我堅(jiān)持認(rèn)為紧武,做好App剃氧,提升用戶使用黏性,才是提升推送到達(dá)率的關(guān)鍵

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阻星,一起剝皮案震驚了整個(gè)濱河市朋鞍,隨后出現(xiàn)的幾起案子已添,更是在濱河造成了極大的恐慌,老刑警劉巖滥酥,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件更舞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡坎吻,警方通過(guò)查閱死者的電腦和手機(jī)缆蝉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瘦真,“玉大人刊头,你說(shuō)我怎么就攤上這事≈罹。” “怎么了原杂?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)您机。 經(jīng)常有香客問(wèn)我穿肄,道長(zhǎng),這世上最難降的妖魔是什么际看? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任咸产,我火速辦了婚禮,結(jié)果婚禮上仿村,老公的妹妹穿的比我還像新娘锐朴。我一直安慰自己兴喂,他們只是感情好蔼囊,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著衣迷,像睡著了一般畏鼓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上壶谒,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天云矫,我揣著相機(jī)與錄音,去河邊找鬼汗菜。 笑死让禀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的陨界。 我是一名探鬼主播巡揍,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼菌瘪!你這毒婦竟也來(lái)了腮敌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎糜工,沒(méi)想到半個(gè)月后弊添,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捌木,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年油坝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钮莲。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡免钻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出崔拥,到底是詐尸還是另有隱情极舔,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布链瓦,位于F島的核電站拆魏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏慈俯。R本人自食惡果不足惜渤刃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贴膘。 院中可真熱鬧卖子,春花似錦、人聲如沸刑峡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)突梦。三九已至诫舅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宫患,已是汗流浹背刊懈。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娃闲,地道東北人虚汛。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像皇帮,于是被迫代替她去往敵國(guó)和親卷哩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 極光推送: 1.JPush當(dāng)前版本是1.8.2玲献,其SDK的開發(fā)除了正常的功能完善和擴(kuò)展外也緊隨蘋果官方的步伐殉疼,SD...
    Isspace閱讀 6,696評(píng)論 10 16
  • 推送技術(shù)產(chǎn)生場(chǎng)景: --服務(wù)器端主動(dòng)性: 客戶端與服務(wù)器交互都是客戶端主動(dòng)的, 服務(wù)器一般不能主動(dòng)與客戶端進(jìn)行數(shù)據(jù)...
    原軍鋒閱讀 34,505評(píng)論 4 60
  • 一個(gè)不具備消息推送功能的APP不能稱之為APP梯浪,消息推送是產(chǎn)品和運(yùn)營(yíng)人員常用用戶運(yùn)營(yíng)工具。 消息推送的目的在于: ...
    幸運(yùn)妮兒閱讀 2,186評(píng)論 0 5
  • 引言 寫這篇文章主要是總結(jié)一下支付寶的使用,因?yàn)樽罱@個(gè)項(xiàng)目要添加一個(gè)支付寶功能,所有的資料都是通過(guò)查看螞蟻金服開...
    音符上的碼字員閱讀 13,597評(píng)論 0 0
  • 宇宙獵冰人的使女過(guò)于悲哀瓢娜,來(lái)到河畔 眼眶之內(nèi)的寂寂藍(lán)色 割破了我的二十五根琴弦 其實(shí)獵冰人并不認(rèn)識(shí)自己的宇宙挂洛。 他...
    F北落師門閱讀 362評(píng)論 0 0