Android 手機(jī)廠商推送服務(wù)調(diào)研

? ? 由于谷歌服務(wù)在國(guó)內(nèi)不能用,Android 的推送真是一大痛點(diǎn),但也推動(dòng)了國(guó)內(nèi)一批做第三方服務(wù)的廠商。第三方推送做的比較好的有極光、個(gè)推、百度、友盟,經(jīng)過(guò)比較之后,最后選擇了極光推送。其實(shí)這些第三方推送之間的差別并不太大,技術(shù)上都沒(méi)問(wèn)題,能不能收到推送,關(guān)鍵還是看前端進(jìn)程是不是還活著,這也是影響推送成功率的關(guān)鍵。從我們App來(lái)看,Android的成功率一直不高,還不到iOS的五分之一。

????前面說(shuō)了,影響推送成功的關(guān)鍵是前端進(jìn)程是否活著,App想要收到推送的話,就要一直在后臺(tái)運(yùn)行,還有一些流氓軟件,為了長(zhǎng)期在后臺(tái)運(yùn)行,充分利用Android系統(tǒng)的開(kāi)放性,無(wú)所不用其極,這也是早期Android給人體驗(yàn)差的一個(gè)重要原因。后來(lái)Android系統(tǒng)加強(qiáng)了對(duì)后臺(tái)進(jìn)程的限制,尤其是國(guó)內(nèi)的手機(jī)廠商,在對(duì)付國(guó)產(chǎn)軟件方面,有很高的造詣,甚至有的手機(jī)廠商就只給微信開(kāi)了特權(quán),其他軟件到后臺(tái)幾分鐘就被殺掉或凍結(jié)了。這樣用戶體驗(yàn)是上來(lái)了,但是對(duì)于推送來(lái)說(shuō),真是雪上加霜。

? ? 還好,小米、華為等手機(jī)廠商也意識(shí)到了這個(gè)問(wèn)題,紛紛推出了自家的推送服務(wù)。想從根本上解決Android的問(wèn)題,還得依賴這些廠商呀!2017年10月16日,工信部也聯(lián)合國(guó)內(nèi)各大廠商和互聯(lián)網(wǎng)公司,發(fā)起成立了統(tǒng)一推送聯(lián)盟,致力于解決Android推送問(wèn)題,統(tǒng)一推送標(biāo)準(zhǔn),但估計(jì)看到成果還需要些時(shí)日,遠(yuǎn)水解不了近渴。于是最近抽時(shí)間,研究了華為、小米、OPPO、VIVO這幾家國(guó)內(nèi)主流廠商的服務(wù)。

? ? 通過(guò)對(duì)各家推送服務(wù)SDK的研究,將分別對(duì)每家的推送進(jìn)行分析,最終給出整合意見(jiàn)。



????先放上各家推送服務(wù)傳送門(mén):華為小米VIVOOPPO

?華為:

? ? 感覺(jué)華為推送的文檔比較少,可能跟他的功能太簡(jiǎn)單有關(guān)。首先需要解釋下幾個(gè)名詞:Hms(華為移動(dòng)服務(wù)),NC(通知中心)。通知欄推送:即常規(guī)的推送,消息抵達(dá)時(shí)由NC,或者是小米/VIVO/OPPO/等推送服務(wù)彈出通知欄。透?jìng)鳎嚎珊?jiǎn)單理解為格式自由定義,不彈起通知欄的推送,且透?jìng)饕话闱闆r下需要在APP處于前后臺(tái)時(shí)才能收到。

????注意,HMS除了支持推送,還支持華為賬號(hào)登錄,華為支付等功能,你可以根據(jù)需要自由對(duì)接,但因?yàn)槲覀冄芯康姆较騿?wèn)題,這里只講推送部分。其實(shí)在此之前,還有一個(gè)老版本的華為推送,但SDK升級(jí)后老推送就不再支持,文檔也不見(jiàn)了,且新老推送是不兼容的,你只能二選一。

? ? 新的華為推送服務(wù)不支持IOS,非華為手機(jī)使用華為推送SDK則需要APP各自建立長(zhǎng)鏈接。在非華為手機(jī)上首次點(diǎn)開(kāi)APP后,SDK會(huì)引導(dǎo)用戶下載華為HMS安裝,體驗(yàn)比較差,所以不建議大家在非華為手機(jī)上使用該SDK,而且個(gè)人嘗試了下,雖然下載安裝了HMS,但未能在非華為手機(jī)成功收到token。

? ? 華為手機(jī)使用官方推送的好處是顯而易見(jiàn)的,殺掉APP通知欄依然可以收到通知,所有APP共享推送通道,手機(jī)更省電,但如果想要使用透?jìng)鞴δ埽托枰謾C(jī)處于前后臺(tái)狀態(tài)。另外即便是EMUI的手機(jī),也不是接入了SDK就能接收推送了,文檔中寫(xiě)到只有部分EMUI4.0和4.1的手機(jī),以及5.0之后的手機(jī)才能收到NC服務(wù),其次,刪除token和通知欄消息開(kāi)關(guān)的api 在EMUI5.1以上的手機(jī)上才能起到效果。最后FAQ中有講到EMUI8.0目前有個(gè)系統(tǒng)底層關(guān)于通知欄的bug,請(qǐng)將工程buildVersion、targetVersion和compileVersion都改成26之前的版本。

? ? 那如何分辨手機(jī)是否支持華為推送呢,官方FAQ提供了幾個(gè)方法,點(diǎn)開(kāi)“在線幫助”-“常見(jiàn)問(wèn)題說(shuō)明”中,有具體的EMUI版本及HMS版本的識(shí)別方法,這里不再?gòu)?fù)述。

????服務(wù)端API調(diào)用有流控限制,用戶短時(shí)間內(nèi)發(fā)送大量的消息會(huì)被流控,并返回HTTP 503狀態(tài)碼。默認(rèn)3000條/秒,如需要調(diào)整,請(qǐng)聯(lián)系華為客服。并且每次API調(diào)用攜帶的device_token_list最大為1000個(gè)推送量,如果你的推送是群發(fā)則不用理會(huì)這個(gè)限制。

? ? 查看文檔時(shí),請(qǐng)著重看“開(kāi)發(fā)準(zhǔn)備”,和“客戶端開(kāi)發(fā)指南”,兩處的文檔描述很詳細(xì)。

? ? 集成SDK時(shí)還有一點(diǎn)需要注意,除了使用gradle集成SDK,還需要下載一個(gè)hms agent壓縮包,這個(gè)壓縮包其實(shí)就是一些華為的代碼,可能官方覺(jué)得把所有功能都整合到SDK里太大了,就用這種方式希望大家按需解壓,但個(gè)人感覺(jué)其實(shí)沒(méi)什么必要。解壓后的根目錄中有readme文件,建議仔細(xì)閱讀,如果你是windows,請(qǐng)點(diǎn)擊bat文件,執(zhí)行后根據(jù)提示按需選擇即可,最終把提取出來(lái)的java文件放入工程目錄里。

? ? 在完成開(kāi)發(fā)者賬號(hào)申請(qǐng),創(chuàng)建APP,集成SDK,修改manifest等準(zhǔn)備工作后,你就可以嘗試推送一條消息給手機(jī)了。

? ? 其實(shí)接入推送SDK,我們開(kāi)發(fā)人員關(guān)心的無(wú)非三件事,一是如何獲取token/regid,二是通知消息怎么回調(diào),三是推送格式怎么寫(xiě)。

? ? 首先token方面,華為SDK是異步獲取,即調(diào)用gettoken方法后,方法內(nèi)部最多只返回成功失敗的狀態(tài)碼,只有在自定義消息接收器里才能收到token值。而我們常用的極光SDK,則是同步方法:getregid,直接返回空或者具體值。這是他們之間的差異。

? ? 接下來(lái)說(shuō)下華為推送消息回調(diào),這里有些坑需要注意。目前自定義的接收器,只能接受兩個(gè)回調(diào)信息,onEvent和onPushMsg,前者是通知欄消息的回調(diào),后者是透?jìng)鞯幕卣{(diào)。但通知欄回調(diào)在通知消息到達(dá)時(shí)是無(wú)法收到的,無(wú)論前后臺(tái)都不行,只有用戶點(diǎn)擊了攜帶附加消息的通知,onEvent才能觸發(fā)正常,而透?jìng)髦罢f(shuō)過(guò)了,必須在前后臺(tái)狀態(tài)才可以,所以如果大家收不到推送到達(dá)的回調(diào),不要著急,SDK就是這樣設(shè)計(jì)的。

? ? 其實(shí)接入到這里,感覺(jué)華為這個(gè)推送SDK設(shè)計(jì)的很別扭,相信很多開(kāi)發(fā)者是需要收到推送的時(shí)候在APP執(zhí)行一些操作的,但是華為的推送不支持,用戶不點(diǎn)擊通知欄,即便應(yīng)用處于前臺(tái),你也永遠(yuǎn)不知道這條推送到達(dá)了。所以如果大家用推送到達(dá)的回調(diào)來(lái)處理一些業(yè)務(wù)邏輯的話,建議發(fā)送通知欄消息的時(shí)候,再疊加一條透?jìng)饔糜跇I(yè)務(wù)處理。

? ? 而推送格式方面,華為支持比較有限,通知欄推送只能指定打開(kāi)APP(即首頁(yè),大部分APP首頁(yè)都是閃屏),或者打開(kāi)特定頁(yè)面,不夠靈活。譬如我們的使用場(chǎng)景是根據(jù)接受的推送信息分別跳轉(zhuǎn)至ABC等頁(yè)面,使用極光就可以自己在receiver里自由處理,而華為只能用兩種方式,一是指定通知欄點(diǎn)擊動(dòng)作為打開(kāi)APP,同時(shí)對(duì)scheme添加附加信息或?qū)ν扑吞砑觘xtra,在啟動(dòng)頁(yè)根據(jù)獲取到的附加信息進(jìn)行處理;二是按照scheme協(xié)議的格式,在我們的app的manifest里每個(gè)要跳轉(zhuǎn)的頁(yè)面都加入scheme,后臺(tái)推送時(shí)候針對(duì)發(fā)送即可。或者將兩個(gè)思路融合,創(chuàng)建一個(gè)透明樣式的activity,每次推送我們都指向該頁(yè)面,然后再解析附加信息按需跳轉(zhuǎn)即可。而且用這種方式的好處是不用在onEvent里處理回調(diào)。

小米:

? ? 小米文檔感覺(jué)非常詳細(xì)全面,閱讀完之后感覺(jué)和極光差不多,如果你熟悉極光推送,那么小米推送接入的應(yīng)該會(huì)很快,而且原有邏輯部分幾乎不需要修改。小米推送的優(yōu)勢(shì)是,在MIUI中所有APP共享推送通道,APP被殺死也依然能收到通知,除此之外還支持u3d,python等sdk,還有花哨的呼吸燈等推送配置。而且小米推送也是支持IOS的,所以理論上,如果你沒(méi)有使用其他的統(tǒng)計(jì)崩潰統(tǒng)計(jì)等功能的話,完全可以用小米推送替換掉極光,友盟等。

? ? 因?yàn)樾∶孜臋n十分完善,這里直接從系統(tǒng)判斷,token獲取,回調(diào)方式,推送格式四方面分析。

? ? 判斷MIUI,直接在文檔中心搜索“如何識(shí)別小米設(shè)備/MIUI系統(tǒng)”即可,官方文檔會(huì)告訴你答案。

? ? token上,小米提供了同步的MiPushClient.getRegId的同步方法,以及recevier接收兩種方式。使用比較靈活。

? ? 消息回調(diào)上,onNotificationMessageArrived在推送消息到達(dá)時(shí)觸發(fā),onNotificationMessageClicked則在用戶點(diǎn)擊通知欄時(shí)觸發(fā),onReceivePassThroughMessage在透?jìng)飨⒌竭_(dá)時(shí)觸發(fā),但是需要注意,透?jìng)饕廊恍枰狝PP處于前后臺(tái)狀態(tài)時(shí)候才能回調(diào)。而通知欄消息到達(dá)回調(diào),只有APP在前后臺(tái)才能收到,在APP殺死后重啟,不再能回調(diào)成功。

? ? 推送格式上,小米除了提供了像華為一樣的,打開(kāi)APP,打開(kāi)指定頁(yè)面(scheme格式)外,還有自定義模式,自定義模式就是用戶點(diǎn)擊通知欄后,打不打開(kāi)頁(yè)面,打開(kāi)什么頁(yè)面,完全由開(kāi)發(fā)者在receiver收到回調(diào)后自己處理。

? ? 另外,小米推送的功能比華為強(qiáng)大不少,支持分組,別名等功能。后臺(tái)API調(diào)用次數(shù)按照文檔說(shuō)法,目前沒(méi)有限制,但是如果是針對(duì)regid推送,每次API調(diào)用最多只能攜帶1000個(gè)。

VIVO:

? ? ? vivo的推送文檔是pdf格式,需要下載。按照文檔,vivo推送目前只支持自家rom,而在token獲取,回調(diào),推送格式上,和極光小米也是類(lèi)似的。

? ? 但是對(duì)于vivo推送,有一些需要注意,點(diǎn)我--push推送--push接入FAQ中,有幾個(gè)關(guān)鍵點(diǎn),一個(gè)是目前vivo推送不支持接入金融類(lèi)服務(wù)!二是支持vivo push的vivo 機(jī)型特別少,對(duì),你沒(méi)看錯(cuò),vivo自己家的推送服務(wù),就支持那幾款手機(jī)而已。

? ? 不過(guò)SDK提供了識(shí)別手機(jī)是否支持vivo推送的方法,使用PushClient.getInstance(application).isSupport()或者是判斷回調(diào)狀態(tài)碼101均可。經(jīng)個(gè)人嘗試,找到了若干款型號(hào)類(lèi)似的手機(jī),譬如文檔中講支持VIVO X21手機(jī),但是我用X21A就不支持推送,可見(jiàn)這個(gè)局限性還挺大。因?yàn)檎也坏椒蠗l件的手機(jī),目前只是把代碼整合進(jìn)去了,具體還沒(méi)進(jìn)行測(cè)試。

????token獲取提供了PushClient.getInstance(application).getRegId()同步方法,onReceiveRegId回調(diào)方法,但文檔描述這個(gè)回調(diào)僅僅在regid變化時(shí)可收到。

? ??onNotificationMessageArrived回調(diào)在推送到達(dá)時(shí)觸發(fā),onNotificationMessageClicked回調(diào)在推送點(diǎn)擊時(shí)觸發(fā),因?yàn)闆](méi)有真機(jī)測(cè)試成功,在殺死APP重啟后是否能繼續(xù)收到未經(jīng)驗(yàn)證。

? ? 而且即便大家整合完畢,也需要留意,官方文檔中描述,VIVO推送是分時(shí)段的,為了避免打擾用戶,目前vivo手機(jī)接收的消息為9:00-21:00,服務(wù)器允許推送時(shí)間為9:00-20:00,單推不受此時(shí)間限制。限制時(shí)間外的推送將被作廢,不再重發(fā)。所以需要整合的小伙伴要權(quán)衡。

OPPO:

? ? oppo推送目前處于公測(cè)階段,打開(kāi)就會(huì)提示只對(duì)部分開(kāi)發(fā)者開(kāi)放,至于如何成為部分受邀開(kāi)發(fā)者,需要通過(guò)郵件進(jìn)行申請(qǐng),但是到哪里申請(qǐng)不知道。這里也沒(méi)有往下進(jìn)行了。但想到OV(OPPO和VIVO,以下簡(jiǎn)稱(chēng)OV)其實(shí)是一個(gè)老板,而且看VIVO那邊的情況,差不多也就明白了,OV的推送服務(wù)應(yīng)該是剛開(kāi)始起步,估計(jì)只有部分新款手機(jī)才能支持,雖然OV手機(jī)的用戶占比比較高,但是能收到推送的新機(jī)型比例應(yīng)該還是很低的。所以目前是否需要接入看大家各自需要。

推送整合 :

? ? 老牌三方推送,極光SDK也支持各家推送通道進(jìn)行整合,就類(lèi)似sharedsdk整合分享原理一樣,前提是需要分別注冊(cè)各家大廠的推送賬號(hào),創(chuàng)建應(yīng)用。最后按極光的文檔配置各種appid,appkey即可,但是極光的該功能是收費(fèi)服務(wù),具體費(fèi)用需要咨詢極光商務(wù)。而自己整合肯定沒(méi)有費(fèi)用問(wèn)題。

? ? 單獨(dú)接入各家SDK的最終目的還是要整合在一起,按照目前的粗略調(diào)查,OV的ROM占比高達(dá)45%以上,還是很可觀的,如果加上華為,小米,四家廠商的ROM會(huì)高達(dá)85%+,整合后的效果會(huì)比單純集成極光好很多。魅族也有推送,但是比例低于1%,三星及其它手機(jī)則更低,所以就沒(méi)有關(guān)注其他的推送。

????整合的意義在于提高推送到達(dá)率,更加省電。?由于目前的OV推送服務(wù)有很大的不確定性,建議不是特別緊急就不用集成了,保持關(guān)注即可,畢竟隨著時(shí)間的推移,支持OV推送的手機(jī)比例會(huì)大幅度增加,屆時(shí)再接入也不遲。

? ? 目前整合的大致思路是首先識(shí)別ROM,依據(jù)rom類(lèi)型分別啟動(dòng)不同SDK(前邊已經(jīng)介紹了各個(gè)廠商識(shí)別自家ROM的方法),如果無(wú)法成功識(shí)別或者啟動(dòng)SDK異常,則使用極光等三方推送或小米推送作為兜底。

? ? 第二是獲取不同廠家的token/regid,上報(bào)給自己的服務(wù)器進(jìn)行綁定,因?yàn)橛械膹S家是異步,有的是同步獲取,需要大家視情況自己處理業(yè)務(wù)邏輯。

? ? 第三由服務(wù)器針對(duì)APP上報(bào)的信息,使用不同廠家的推送API推送信息。推送方式和格式上建議統(tǒng)一,即創(chuàng)建一個(gè)透明activity,統(tǒng)一使用scheme格式并攜帶附加信息,看起來(lái)大概是這個(gè)樣子:你定義的scheme:你定義的host?action=你定義的action,然后在透明的activity里根據(jù)action跳轉(zhuǎn)至不同頁(yè)面,處理完成后及時(shí)關(guān)閉這個(gè)透明界面即可。

? ? 至此整個(gè)SDK集成的分析就結(jié)束了,今后可能會(huì)對(duì)此文檔不定期更新,感謝閱讀。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,835評(píng)論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,676評(píng)論 3 419
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,730評(píng)論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,118評(píng)論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,873評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,266評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,330評(píng)論 3 443
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,482評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,036評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,846評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,025評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,575評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,279評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,684評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,953評(píng)論 1 289
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,751評(píng)論 3 394
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,016評(píng)論 2 375

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

  • 前言 在Android開(kāi)發(fā)中,消息推送功能的使用非常常見(jiàn)。 推送消息截圖 為了降低開(kāi)發(fā)成本,使用第三方推送是現(xiàn)今較...
    BillyLu1994閱讀 4,463評(píng)論 0 2
  • 份額對(duì)比: 首先關(guān)注廠商推送,能夠保證push服務(wù)最大程度存活以保證實(shí)時(shí)觸達(dá)。 小米推送 免費(fèi)、到達(dá)率高、Andr...
    vv冥焰閱讀 2,687評(píng)論 0 1
  • 極光推送: 1.JPush當(dāng)前版本是1.8.2,其SDK的開(kāi)發(fā)除了正常的功能完善和擴(kuò)展外也緊隨蘋(píng)果官方的步伐,SD...
    Isspace閱讀 6,758評(píng)論 10 16
  • 復(fù)習(xí)了一維數(shù)組的使用方法,使十進(jìn)制轉(zhuǎn)二進(jìn)制的算法簡(jiǎn)單化。 學(xué)會(huì)了for語(yǔ)句中break與continue的使用,b...
    TG帥閱讀 137評(píng)論 0 0
  • 話說(shuō)小編老因?yàn)槠胀ㄔ挷粯?biāo)準(zhǔn)而遭到外地朋友的吐槽,但是今兒看到博客上一個(gè)話題,看完評(píng)論小編發(fā)現(xiàn)有口音是件多么性感的事...
    如然_天之明閱讀 159評(píng)論 0 1