本發(fā)明涉及安卓技術(shù)領(lǐng)域,特別是涉及安卓系統(tǒng)下檢測通知功能被屏蔽的方法、裝置及計算設(shè)備。
背景技術(shù):
由于安卓應(yīng)用繁多且質(zhì)量參差不齊,某些應(yīng)用會頻繁的推送通知消息,而這些通知消息對于用戶而言多是無用消息或廣告消息,導(dǎo)致用戶體驗下降。因此安卓系統(tǒng)還提供了屏蔽應(yīng)用通知消息的功能供用戶選擇性使用,并且許多廠商在深度定制安卓系統(tǒng)時直接默認屏蔽了第三方應(yīng)用的消息權(quán)限。
在應(yīng)用通知消息被屏蔽的情況下,應(yīng)用無法推送通知消息,或者無法在用戶操作應(yīng)用界面時彈出通知給予用戶相關(guān)的消息反饋,導(dǎo)致用戶與應(yīng)用的交互體驗變差。例如,后臺推送應(yīng)用自更新的通知欄消息被屏蔽時,用戶無法及時體驗最新版本;后臺推送運營活動的通知欄消息被屏蔽時,用戶無法及時知曉或參與活動;用戶使用下載等核心功能,如果下載結(jié)果通知消息被屏蔽,則在下載出現(xiàn)異常時,應(yīng)用無法彈出消息提示告知用戶原因,用戶可能感到迷茫,影響用戶體驗等等。
由此需要一種能夠檢測安卓系統(tǒng)下通知功能是否被屏蔽的方案。
技術(shù)實現(xiàn)要素:
本發(fā)明主要解決的目的在于提供一種能夠檢測安卓系統(tǒng)下通知功能是否被屏蔽的方法、裝置及計算設(shè)備。
根據(jù)本發(fā)明的一個方面,提供了一種安卓系統(tǒng)下檢測通知功能被屏蔽的方法,包括:構(gòu)造用于向顯示屏推送的通知,其中通知被構(gòu)造為不可見;以及在判定通知被阻止在顯示屏上顯示的情況下,提示通知功能被屏蔽。
由此,可以根據(jù)構(gòu)造的通知無法在顯示屏上顯示來判定通知功能被屏蔽,并提示或引導(dǎo)用戶進行相應(yīng)的操作。
優(yōu)選地,通知功能可以是如下至少之一:在通知欄里展示通知內(nèi)容;以及在彈出框中展示通知內(nèi)容。
由此本發(fā)明可以對安卓系統(tǒng)包括的通知欄里的通知(Notification)和彈出后會自動消失的吐司(Toast)兩種通知功能是否被屏蔽進行檢測。相應(yīng)地,可以針對不同的通知功能構(gòu)造不同的通知,提示通知功能被屏蔽也可以是針對不同的通知進行的。
優(yōu)選地,通知被構(gòu)造為不可見可以包括如下至少之一:通知被顯示為大小不可見;通知被顯示為透明不可見;以及通知被顯示為顏色不可見。
其中“不可見”包括不易被察覺,例如(人類感覺閾值之下的)大小足夠小、足夠透明、顏色與背景色足夠相似等等的通知,由此在檢測過程中保持對用戶透明。
優(yōu)選地,通知可以是彈出框通知,并且判定通知被阻止在顯示屏上顯示包括:通過監(jiān)聽onAttachedToWindow事件進行判定。由此可以通過簡單的事件監(jiān)聽來判斷通知功能是否被屏蔽。進一步地,判定通知被阻止在顯示屏上顯示還可以包括:在調(diào)用API展示彈出框通知達預(yù)定時間后監(jiān)聽onAttachedToWindow事件。
優(yōu)選地,提示通知功能被屏蔽可以包括如下至少之一:跳轉(zhuǎn)至通知權(quán)限設(shè)置界面;以及彈出對話框或提示框。由此方便用戶對屏蔽進行相應(yīng)的取消或設(shè)置。
優(yōu)選地,該方法還可以包括:在判定通知未被阻止在顯示屏上顯示的情況下,指示通知功能未被屏蔽。
根據(jù)本發(fā)明的另一個方面,還提供了一種安卓系統(tǒng)下檢測通知功能被屏蔽的裝置,包括:通知構(gòu)造單元,構(gòu)造用于向顯示屏推送的通知,其中通知被構(gòu)造為不可見;屏蔽判定單元,用于判定通知是否被阻止在顯示屏上顯示;以及提示單元,用于在屏蔽判定單元判定通知被阻止在顯示屏上顯示的情況下,提示通知功能被屏蔽。
優(yōu)選地,通知是彈出框通知,并且屏蔽判定單元通過在調(diào)用API展示彈出框通知達預(yù)定時間后監(jiān)聽onAttachedToWindow事件來進行判定。
根據(jù)本發(fā)明的又一個方面,還提供一種計算設(shè)備,包括:顯示屏,用于向用戶顯示內(nèi)容;以及連接至顯示屏的處理器,用于:構(gòu)造用于向顯示屏推送的通知,其中通知被構(gòu)造為不可見;以及在判定通知被阻止在顯示屏上顯示的情況下,提示通知功能被屏蔽。
本發(fā)明的安卓系統(tǒng)下檢測通知功能被屏蔽的方法、裝置及計算設(shè)備,可以根據(jù)構(gòu)造的通知無法在顯示屏上顯示來判定通知功能被屏蔽,提示并引導(dǎo)用戶進行相應(yīng)的操作。
附圖說明
通過結(jié)合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標(biāo)號通常代表相同部件。
圖1是示出了根據(jù)本發(fā)明一實施例的計算設(shè)備的功能框圖。
圖2是示出了根據(jù)本發(fā)明的安卓系統(tǒng)下檢測通知功能被屏蔽的方法的示意性流程圖。
圖3是示出了根據(jù)本發(fā)明的安卓系統(tǒng)下檢測通知功能被屏蔽的裝置的功能框圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達給本領(lǐng)域的技術(shù)人員。
如前所述,為了能夠檢測應(yīng)用通知功能是否被屏蔽,本發(fā)明構(gòu)造向顯示屏推送的不可見的通知,通過判斷該通知是否被展示,可以判定通知功能是否被屏蔽。在判定通知功能被屏蔽的情況下,可以向用戶提示通知功能被屏蔽,以引導(dǎo)用戶開啟通知功能。
下面將參照圖1至圖3來具體地描述本發(fā)明的實施例。圖1是示出了根據(jù)本發(fā)明一實施例的計算設(shè)備100的功能框圖。計算設(shè)備100可以是裝載了安裝系統(tǒng)的任何類型計算設(shè)備,優(yōu)選為移動設(shè)備,包括移動計算機或移動計算設(shè)備(例如,平板計算機、個人數(shù)字助理、膝上型計算機、筆記本計算機、上網(wǎng)本等)、移動電話(例如,智能手機)、可佩戴的計算設(shè)備(例如,智能手表、智能眼鏡等)或其他類型的移動設(shè)備等。
如圖1所示,計算設(shè)備100包括顯示屏110和處理器120,顯示屏110連接到處理器120。在本發(fā)明的一個實施例中,計算設(shè)備100還可以包括圖1中未示出的諸如存儲器、輸入輸出裝置等的其他部件。上述及其他部件也可以例如通過總線彼此相連。應(yīng)當(dāng)理解,圖1所示的計算設(shè)備結(jié)構(gòu)框圖僅僅是出于示例的目的,而不是對本發(fā)明范圍的限制。本領(lǐng)域技術(shù)人員可以根據(jù)需要,增添或替換其他部件。
處理器120能夠構(gòu)造用于向顯示屏110推送的通知,其中通知被構(gòu)造為不可見,并且在判定通知被阻止在顯示屏110上顯示的情況下,提示通知功能被屏蔽。由此在利用本發(fā)明判定通知功能被屏蔽時,可以提示用戶通知功能已被屏蔽,以引導(dǎo)用戶打開通知功能,從而能夠接收應(yīng)用推送的消息,進而可以提高用戶與應(yīng)用之間的交互體驗。
處理器120檢測通知功能被屏蔽的處理可以參見圖2。圖2是示出了根據(jù)本發(fā)明一實施例的檢測方法200的流程圖。
參見圖2,檢測方法200開始于步驟S210,構(gòu)造用于向顯示屏推送的通知,其中通知被構(gòu)造為不可見。
在安卓系統(tǒng)中,安卓應(yīng)用消息提醒通常有以下兩種方式,分別是展示在通知欄里的通知(Notification)和彈出幾秒后會自動消失的吐司(Toast),兩者都能夠為用戶提供良好的交互體驗。因此本發(fā)明的檢測方法200述及的通知功能可以是在通知欄里展示通知內(nèi)容(例如,Notification),也可以是在彈出框中展示通知內(nèi)容(例如,Toast)。
根據(jù)需要檢測的通知功能的類型,可以構(gòu)造對應(yīng)的用于向顯示屏推送的通知。由于所構(gòu)造的通知主要用于檢測,因此優(yōu)選將通知構(gòu)造為對于用戶不可見,由此確保該檢測方法對用戶透明??梢酝ㄟ^將通知設(shè)為大小為零、完全透明或是背景色等方式來確保通知對用戶不可見。此處述及的“不可見”可以指用戶無法看見,也可以指無法被用戶輕易察覺,例如可以是在人類感覺閾值之下的大小足夠小、足夠透明、顏色與背景色足夠相似等等,由此同樣可以確保檢測過程對用戶透明或至少接近透明。
在通知構(gòu)造完成后,可以檢測所構(gòu)造的通知是否在顯示屏上顯示,在判定通知被阻止在顯示屏上顯示的情況下,表明對應(yīng)的通知功能被屏蔽,由此就可以向用戶提示通知功能被屏蔽(步驟S220)。
舉例來說,在檢測的通知功能是Toast時,所構(gòu)造的通知可以是彈出框通知。此時可以通過監(jiān)聽onAttachedToWindow事件是否觸發(fā)來判斷彈出框通知是否被阻止在顯示屏上顯示。其中,onAttachedToWindow是控件展示到屏幕上時會被觸發(fā)的生命周期事件,通過監(jiān)聽該事件可以判斷控件是否有被展示到屏幕上。
具體地,可以調(diào)用API來展示彈出框通知,然后監(jiān)聽onAttachedToWindow事件是否觸發(fā),onAttachedToWindow事件觸發(fā)則表明彈出框通知可以被顯示在顯示屏上,Toast功能未被屏蔽,onAttachedToWindow事件沒觸發(fā)則表明彈出框通知被阻止顯示在顯示屏上,Toast功能被屏蔽。其中,為了便于實現(xiàn)onAttachedToWindow事件的監(jiān)聽,可以設(shè)置一個延時任務(wù)來配合判斷,所設(shè)置的延時任務(wù)的延時時間可以和彈出框通知的展示時長一致。由此,在調(diào)用API來展示Toast后,如果onAttachedToWindow事件觸發(fā),Toast功能未被屏蔽,延時任務(wù)不執(zhí)行。如果延時任務(wù)在調(diào)用API來展示Toast后預(yù)定時間后執(zhí)行,表明onAttachedToWindow事件沒觸發(fā),Toast功能被屏蔽。由此可以配合延時任務(wù)來實現(xiàn)Toast功能是否被屏蔽的異步檢測。
至此以通知功能為Toast時的判斷過程做了詳細說明,對于通知功能為通知欄中的通知的情況,則可以使用本領(lǐng)域技術(shù)人員熟知的其它方式進行判定,本文不再贅述。
通知功能被完全屏蔽時,任何應(yīng)用都無法推送消息。這樣通常會降低用戶體驗。因此在檢測到通知功能被屏蔽時,可以通過能夠引起用戶注意的通知方式提示通知功能被屏蔽,例如可以跳轉(zhuǎn)至通知權(quán)限設(shè)置界面、彈出對話框或提示框等等。
另外,在判定通知未被阻止在顯示屏上顯示的情況下,表明通知功能未被屏蔽。由于通知功能未被屏蔽,對用戶影響較小,因此可以通過不會引起用戶特別注意的通知方式來指示通知功能未被屏蔽??梢栽诰邆錂z測通知屏蔽功能的應(yīng)用(例如,PP助手客戶端)里的相應(yīng)測試項中標(biāo)出綠色的鉤來指示通知功能未被屏蔽。
圖3是示出了根據(jù)本發(fā)明一實施例的安卓系統(tǒng)下檢測通知功能被屏蔽的裝置的功能框圖。其中,檢測裝置300的功能模塊可以由實現(xiàn)本發(fā)明原理的硬件、軟件或硬件和軟件的結(jié)合來實現(xiàn)。本領(lǐng)域技術(shù)人員可以理解的是,圖3所描述的功能模塊可以組合起來或者劃分成子模塊,從而實現(xiàn)上述發(fā)明的原理。因此,本文的描述可以支持對本文描述的功能模塊的任何可能的組合、或者劃分、或者更進一步的限定。
圖3所示的檢測裝置300可以用來實現(xiàn)圖2所示的檢測方法,下面僅就檢測裝置300可以具有的功能模塊以及各功能模塊可以執(zhí)行的操作做簡要說明,對于其中涉及的細節(jié)部分可以參見上文結(jié)合圖2的描述,這里不再贅述。
如圖3所示,檢測裝置300包括通知構(gòu)造單元310、屏蔽判定單元330以及提示單元350。
通知構(gòu)造單元310構(gòu)造用于向顯示屏推送的通知,其中通知被構(gòu)造為不可見。屏蔽判定單元330用于判定通知是否被阻止在顯示屏上顯示。提示單元350用于在屏蔽判定單元判定通知被阻止在顯示屏上顯示的情況下,提示通知功能被屏蔽。提示單元350優(yōu)選地還可以在通知未被阻止的情況下指示通知功能未被屏蔽。
如果通知是彈出框通知,則屏蔽判定單元可以通過在調(diào)用API展示彈出框通知達預(yù)定時間后監(jiān)聽onAttachedToWindow事件來進行判定。其中具體的判斷過程可以參見上文相關(guān)描述,這里不再贅述。
上文中已經(jīng)參考附圖詳細描述了根據(jù)本發(fā)明的安卓系統(tǒng)下檢測通知功能被屏蔽的方法、裝置及計算設(shè)備。如下將以檢測的通知功能為Toast為例給出利用本發(fā)明檢測Toast功能是否被屏蔽的具體過程。
應(yīng)用例
首先通過執(zhí)行以下步驟來完成檢測的設(shè)置。
1、構(gòu)造安卓系統(tǒng)下的彈出框通知,作為Toast檢測實例(簡稱吐司T),吐司T的作用是彈出一個會自動消失的消息提醒。
2、設(shè)置吐司T的展示時長類型為LENGTH_SHORT。Toast提供2種時長類型,LENGTH_SHORT為1.5秒,LENGTH_LONG為3秒。由于吐司T用于檢測Toast功能是否被屏蔽,因此優(yōu)選時長更短的LENGTH_SHORT,以提高檢測速率。上述時長類型的設(shè)置不是必須的。
3、構(gòu)造安卓系統(tǒng)原生的View(控件視圖),用于將吐司T設(shè)置為不可見。例如,可以將該控件視圖的高度和寬度的值均為0,并用該控件視圖替換吐司T中默認的控件視圖。由此替換后吐司T的寬度和高度都為0,對于用戶不可見,但系統(tǒng)仍會“展示”吐司T。
4、調(diào)用Toast的原生API方法“show”以使得系統(tǒng)在界面上展示吐司T??紤]到系統(tǒng)對于“onAttachedToWindow”事件通常是異步觸發(fā),因此啟用延時任務(wù)P,其延時時間例如可以是1秒或1.5秒。
6、在延時任務(wù)P之后監(jiān)聽控件視圖是否觸發(fā)其原生生命周期事件“onAttachedToWindow”,以判斷系統(tǒng)是否屏蔽了吐司T。
Toast功能未屏蔽:由于系統(tǒng)只有真正將吐司T展示到界面窗口上,才會觸發(fā)步驟6中的“onAttachedToWindow”事件,因此如果步驟6監(jiān)聽的生命周期事件被觸發(fā),就說明系統(tǒng)沒有屏蔽應(yīng)用的消息權(quán)限。
Toast功能已屏蔽:如果“onAttachedToWindow”事件未被觸發(fā),則表明系統(tǒng)并未將吐司T展示到界面窗口上,因此可以判定系統(tǒng)已經(jīng)屏蔽了應(yīng)用的消息權(quán)限。
至此便可成功檢測出應(yīng)用消息是否被系統(tǒng)屏蔽,并通過檢測結(jié)果進行不同的事務(wù)處理。例如如果檢測到被屏蔽,可以采取一次性的引導(dǎo)策略,引導(dǎo)用戶去設(shè)置界面開啟應(yīng)用的消息權(quán)限,還可以采取別的方式通知或提醒用戶相關(guān)消息,如彈出對話框的方式或懸浮窗提示的方式等。
對于現(xiàn)有的眾多手機生產(chǎn)廠商,其提供的安卓系統(tǒng)存在諸多默認屏蔽消息的現(xiàn)象。利用本發(fā)明的檢測方案能夠快速檢測出通知功能是否被屏蔽,由此使得用戶可以方便地認識到廠商的默認定制并進行自己的優(yōu)選設(shè)置。
此外,根據(jù)本發(fā)明的方法還可以實現(xiàn)為一種計算機程序,該計算機程序包括用于執(zhí)行本發(fā)明的上述方法中限定的上述各步驟的計算機程序代碼指令。或者,根據(jù)本發(fā)明的方法還可以實現(xiàn)為一種計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括計算機可讀介質(zhì),在該計算機可讀介質(zhì)上存儲有用于執(zhí)行本發(fā)明的上述方法中限定的上述功能的計算機程序。本領(lǐng)域技術(shù)人員還將明白的是,結(jié)合這里的公開所描述的各種示例性邏輯塊、模塊、電路和算法步驟可以被實現(xiàn)為電子硬件、計算機軟件或兩者的組合。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)和方法的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)記的功能也可以以不同于附圖中所標(biāo)記的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的改進,或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實施例。