摘要:修改記錄版本的通知欄消息功能上并未發(fā)生變化,右上角的縮減為了。增加了,允許可穿戴設(shè)備遠(yuǎn)程控制通知欄消息。鎖屏狀態(tài)下,可以控制通知欄消息的隱私程度。但是谷歌規(guī)定,自定義布局展示的通知欄消息最大高度是。具體適配不正常的機(jī)型有。
此文已由作者黎星授權(quán)網(wǎng)易云社區(qū)發(fā)布。
歡迎訪問(wèn)網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營(yíng)經(jīng)驗(yàn)。
由于歷史原因,Android在發(fā)布之初對(duì)通知欄Notification的設(shè)計(jì)相當(dāng)簡(jiǎn)單,而如今面對(duì)各式各樣的通知欄玩法,谷歌也不得不對(duì)其進(jìn)行更新迭代調(diào)整,增加新功能的同時(shí),也在不斷地改變樣式,試圖迎合更多人的口味。本文總結(jié)了Android通知欄的版本迭代過(guò)程,在通知欄開(kāi)發(fā)過(guò)程中所遇到的各種各樣的坑,以及一些解決技巧,特別的,對(duì)于大眾期盼的Android 7.0的到來(lái),通知欄又會(huì)發(fā)生怎樣的改變呢?接下來(lái)一一進(jìn)行介紹。
Android通知欄發(fā)展歷史
首先來(lái)看一張各個(gè)Android版本通知欄消息的全家福。
點(diǎn)擊查看大圖
Android通知欄從最初的Android1.1系統(tǒng)一直到如今的7.X版本,發(fā)生了翻天覆地的變化。從圖中可以看出,1.X-2.2版本的通知欄采用了白色背景和黑色字體;2.3-4.X版本,默認(rèn)背景變成了黑色,而主標(biāo)題采用白色字體,內(nèi)容為灰色字體。從Android5.0開(kāi)始,又更改為白色背景和黑色字體。當(dāng)然,這只是原生的Android系統(tǒng)通知欄默認(rèn)顏色,許多廠商對(duì)每個(gè)Android的版本都嘗試了各式各樣的修改,在此不一一介紹。
下面分別介紹每個(gè)版本的更新和修改記錄。
Android 1.X 修改記錄^1
Android 1.X版本也就是第一個(gè)Android誕生的版本。從Android1.1版本開(kāi)始,提供基本的通知欄消息功能,包含小圖標(biāo)、主標(biāo)題、副標(biāo)題和時(shí)間這四個(gè)元素。右上角有一個(gè)清除通知欄消息的按鈕。需要說(shuō)明的是,Android從一開(kāi)始就提供了清除通知欄消息的功能并且保留至今,而iOS到現(xiàn)在都沒(méi)有提供清除按鈕。
Android 2.X 修改記錄^2
Android 2.X版本的通知欄消息功能上并未發(fā)生變化,右上角的“clear notifications”縮減為了“clear”。2.2版本以前沿用了1.5的通知欄樣式,從2.3版本開(kāi)始重新設(shè)計(jì),改成了暗色背景。
Android 3.X 修改記錄^3
Android 3.X版本是專(zhuān)為Pad而設(shè)計(jì)的系統(tǒng)。通知欄消息帶來(lái)了一些新的功能。
非永久的通知欄消息的右邊增加了“X”按鈕,點(diǎn)擊后該條通知可以立即清除。
增加了RemoteControlClient,即遠(yuǎn)程控制媒體應(yīng)用的功能。
增加了LargeIcon,可以使用大圖展示通知欄消息。
Android 4.1 修改記錄^4
Android 4.1版本的通知欄在3.X版本的基礎(chǔ)上進(jìn)行了大量修改。增加了不少新功能。
增加了Style
增加了通知欄按鈕
支持通知欄展示的優(yōu)先級(jí)配置
通知欄背景改為黑色透明
通知欄樣式
Android 4.1通知欄最大的變化就是增加了豐富多樣的Style樣式。通過(guò)設(shè)置樣式,可以展示更大區(qū)域的通知消息,如展示大圖和多行文字,也可以展示類(lèi)似郵箱收發(fā)信的樣式,同時(shí)支持自定義按鈕并增加點(diǎn)擊事件。但需要注意的是,只有最頂部的那條通知欄消息可以默認(rèn)展示Style樣式,其他消息默認(rèn)是以普通樣式展示。Style可以通過(guò)Notification.Builder.setStyle(Style)進(jìn)行設(shè)置。具體支持的樣式有:
Notification.BigPictureStyle
大圖樣式,即除了普通的通知欄消息內(nèi)容外,可以在通知欄消息下方展示一張大圖,最大高度支持256dp。
Notification.BigTextStyle
多行文字樣式,可以支持多行文字的展示。經(jīng)測(cè)試,在不同手機(jī)上能夠支持的行數(shù)不一樣,測(cè)試過(guò)的機(jī)子,最大支持12行。
Notification.InboxStyle
收件箱樣式。支持展示具有一串消息內(nèi)容的會(huì)話樣式,適用于短信、郵件、IM等。
通知欄按鈕
通知欄消息不管是普通樣式還是Style樣式,都支持兩個(gè)按鈕同時(shí)出現(xiàn)在一條通知欄消息的底部,通過(guò)這兩個(gè)按鈕,可以自定義一系列動(dòng)作,包括回復(fù)信息和郵件,點(diǎn)贊等。通過(guò)Notification.Builder.addAction(Action)添加按鈕。
通知欄優(yōu)先級(jí)
Android 4.1通知欄增加了優(yōu)先級(jí)的配置,優(yōu)先級(jí)高的消息可以展示在最上方。谷歌設(shè)計(jì)優(yōu)先級(jí)的初衷是根據(jù)不同的優(yōu)先級(jí)來(lái)防止用戶(hù)整天被各種莫名其妙的通知欄消息騷擾,重要的通知?jiǎng)t應(yīng)該適當(dāng)提高優(yōu)先級(jí),使得用戶(hù)可以快速地看到并回應(yīng),不重要的通知?jiǎng)t降低優(yōu)先級(jí),防止用戶(hù)被打擾。優(yōu)先級(jí)一共有5個(gè)級(jí)別,分別是:
// 默認(rèn)優(yōu)先級(jí)
public static final int PRIORITY_DEFAULT = 0;
// 低優(yōu)先級(jí)
public static final int PRIORITY_LOW = -1;
// 最低優(yōu)先級(jí)
public static final int PRIORITY_MIN = -2;
// 高優(yōu)先級(jí)
public static final int PRIORITY_HIGH = 1;
// 最高優(yōu)先級(jí)
public static final int PRIORITY_MAX = 2;
Android 4.3 修改記錄^6
Android 4.3通知欄沒(méi)有發(fā)生大的變化。主要增加了兩個(gè)小功能。
增加了Notification AccessApi,允許可穿戴設(shè)備遠(yuǎn)程控制通知欄消息。
增加了NotificationListenerService,允許接收到系統(tǒng)通知欄列表的變化
Android 5.X 修改記錄^7
Android 5.X系統(tǒng)相較于以前的版本,可以說(shuō)是一個(gè)真正可以和iOS抗衡的系統(tǒng)。材料設(shè)計(jì)給Android系統(tǒng)注入了新的活力,相應(yīng)的通知欄消息也相較于上一個(gè)版本進(jìn)行了改版。所發(fā)生的變化有:
通知欄修改為白色背景,暗色字體,以適應(yīng)材料設(shè)計(jì)風(fēng)格。
系統(tǒng)會(huì)忽略所有non-alpha通道的圖標(biāo),包括按鈕圖標(biāo)和主圖標(biāo)。
可以通過(guò)setColor()方法在圖標(biāo)后設(shè)置一個(gè)背景色。
通知消息的聲音將通過(guò)STREAM_RING或者STREAM_NOTIFICATION控制,以前是通過(guò)STREAM_MUSIC控制。
鎖屏狀態(tài)下,可以控制通知欄消息的隱私程度。
移除了RemoteControlClient,更改為NotificationCompat.MediaStyle實(shí)現(xiàn)。
增加了Heads-up通知,即通過(guò)狀態(tài)欄浮動(dòng)窗口展示通知消息。
Android 6.X 修改記錄^8
移除了Notification.setLatestEventInfo()方法,通過(guò)持有Notification.Builder,然后使用build()方法可以更新同一個(gè)通知欄實(shí)例。
允許用戶(hù)控制應(yīng)用通知的優(yōu)先級(jí)。
加入了免打擾模式(Do Not Disturb)。
增加了getActiveNotifications()方法獲取當(dāng)前展示的通知消息。
Android 7.X 修改記錄
通知欄樣式全面改版,小圖標(biāo)在左上角,大圖標(biāo)在右邊,小圖標(biāo)、App應(yīng)用名、副標(biāo)題、數(shù)量和時(shí)間在第一行,第二行是主標(biāo)題,第三行是內(nèi)容。
增加了Notification.DecoratedCustomViewStyle()和Notification.DecoratedMediaCustomViewStyle(),幫助更好的裝飾帶有RemoteViews的通知欄消息。
需要?jiǎng)討B(tài)設(shè)置Builder.setShowWhen(true)才會(huì)顯示時(shí)間。
支持Action的直接回復(fù),通過(guò)RemoteInput實(shí)現(xiàn),且回復(fù)的消息內(nèi)容支持立即添加到通知欄。
支持通知消息組,相似的消息在達(dá)到一定數(shù)量后會(huì)按照消息組來(lái)顯示。
增加了NotificationManager.areNotificationsEnabled告知應(yīng)用是否開(kāi)啟了通知權(quán)限。
Android通知欄踩坑與填坑指南
魅族5.X手機(jī),大圖顯示問(wèn)題
問(wèn)題詳情
Flyme系統(tǒng)對(duì)原生Android源碼做了修改,采用BigPictureStyle方式顯示大圖通知欄的時(shí)候,消息與大圖重合了,如下圖。
解決方案
首先說(shuō)一下為什么會(huì)有解決方案。展示大圖這個(gè)功能開(kāi)發(fā)完成后,拿去給產(chǎn)品演示。碰巧產(chǎn)品的機(jī)型就是一魅族手機(jī)T_T,結(jié)果當(dāng)然是不能接受的,然后又一個(gè)巧合的事情出現(xiàn)了,那就是產(chǎn)品的手機(jī)里,京東App推了一條帶大圖的廣告,他們居然能夠解決這個(gè)問(wèn)題!于是,我開(kāi)始研究解決方案。
首先,通過(guò)BigPictureStyle來(lái)實(shí)現(xiàn)大圖功能肯定是走不通的,因?yàn)槭聦?shí)就擺著行不通的嘛。京東的App肯定是通過(guò)RemoteViews來(lái)實(shí)現(xiàn)的。于是,開(kāi)始走彎路,嘗試通過(guò)RemoteViews來(lái)展示大圖。但是谷歌規(guī)定,自定義布局展示的通知欄消息最大高度是64dp。那么,京東的App是怎么實(shí)現(xiàn)的?在嘗試了各種方法以后,最后又是通過(guò)投機(jī)取巧的方式解決了問(wèn)題:
private void showBigPictureNotificationWithMZ(Context context) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); Notification.Builder builder = new Notification.Builder(context); Notification notification = generateNotification(builder); notification.bigContentView = mRemoteViews; notificationManager.notify(notifyId, notification);
}
需要先生成Notification的實(shí)例,然后手動(dòng)給notification.bigContentView賦值,再notify,就可以了
頂部狀態(tài)欄(StatusBar)小圖標(biāo)顯示異常
問(wèn)題詳情
當(dāng)通知來(lái)的時(shí)候,如果不在通知欄瀏覽,會(huì)在頂部狀態(tài)欄出現(xiàn)一個(gè)向上翻滾動(dòng)畫(huà)的通知消息,這條通知消息左邊是一個(gè)小圖標(biāo)。部分系統(tǒng)這個(gè)小圖標(biāo)顯示異常,是一個(gè)純灰色的正方形,如下圖。
解決方案
首先產(chǎn)生灰色圖標(biāo)的原因就是5.0系統(tǒng)引入了材料設(shè)計(jì),谷歌強(qiáng)制使用帶有alpha通道的圖標(biāo),并且RGB的alpha值必須是0(實(shí)測(cè)不為0也是可以的,但系統(tǒng)會(huì)忽略所有RGB值)。因此,使用JPG的圖片是不行的,最好的代替方案就是一張背景透明的PNG圖片。
Android 7.X機(jī)型,通知欄小圖標(biāo)顯示成灰色
問(wèn)題詳情
這個(gè)問(wèn)題跟第二個(gè)有點(diǎn)類(lèi)似,在7.0系統(tǒng)及以上,有部分應(yīng)用的小圖標(biāo)是灰色的,大圖可以正常顯示。碰巧的是,顯示異常的小圖標(biāo),顏色都是灰色的。
解決方案
與小圖標(biāo)顯示異常解決方案類(lèi)似,將小圖標(biāo)替換為透明背景的PNG圖片。
RemoteViews顯示異常
問(wèn)題詳情
由于系統(tǒng)提供的通知欄消息類(lèi)型有時(shí)候不能滿(mǎn)足要求,部分通知欄消息采用自定義RemoteViews來(lái)實(shí)現(xiàn)。采用RemoteViews,特別是手動(dòng)生成Bitmap然后直接傳給一個(gè)自定義Layout,再通過(guò)setContentView方式設(shè)置通知欄消息時(shí),會(huì)存在各種各樣的坑。
Android通知欄的背景色有幾種情況,白色、暗色、暗色透明和黑色。如果生成的Bitmap帶背景色,這個(gè)背景色就很難選擇。如果選擇黑色背景,那么在白色通知欄的機(jī)型上就很難看。因此不能完全在各個(gè)系統(tǒng)上面完美展示出來(lái)。如果不帶背景色,那么字體顏色也面臨同樣的困惑。試想,如果在白色的背景上顯示白色的文字,用戶(hù)看到白茫茫一片,是什么感受?
另一方面,大部分廠商對(duì)原生的Android系統(tǒng)都會(huì)有各種各樣的改造,通知欄的樣式也不例外。如果按照原生的樣式來(lái)設(shè)計(jì),那么在大部分國(guó)內(nèi)廠商的機(jī)子上顯示都和正常的普通通知欄消息不一樣。例如華為6.0系統(tǒng)的機(jī)子,原生系統(tǒng)的時(shí)間線在右上角,華為的在左邊,這樣會(huì)給用戶(hù)帶來(lái)錯(cuò)覺(jué)。
解決方案
詳見(jiàn)RemoteViews適配一節(jié)。
大尺寸小圖標(biāo)在部分機(jī)型上顯示不正確
問(wèn)題詳情
這個(gè)問(wèn)題主要在部分機(jī)型的4.X系統(tǒng)上遇見(jiàn),小圖標(biāo)大小沒(méi)有按照24dp裁剪,而是采用了桌面圖標(biāo)一樣的大小96dp。具體適配不正常的機(jī)型有HTC Desire 820、Lenovo A320T。
解決方案
按照標(biāo)準(zhǔn)來(lái),小圖標(biāo)大小為24dp,大圖標(biāo)為桌面icon圖標(biāo)大小96dp。具體可參考這里^14
部分機(jī)型不支持Style
具體機(jī)型見(jiàn)下圖以及后面統(tǒng)計(jì)的表格。順便提下,小米是其中之一,不知道他們?yōu)槭裁床恢С诸~外的這些Style。
點(diǎn)擊查看大圖
通知欄更新頻率
問(wèn)題詳情
每個(gè)應(yīng)用基本都有自更新的邏輯,App開(kāi)機(jī)的時(shí)候提示用戶(hù)升級(jí),點(diǎn)擊升級(jí)按鈕后在Notification出現(xiàn)一個(gè)下載帶進(jìn)度條的通知。應(yīng)用一般是在開(kāi)啟一個(gè)工作線程在后臺(tái)下載,然后在下載的過(guò)程中通過(guò)回調(diào)更新通知欄中的進(jìn)度條。我們知道,下載進(jìn)度的快慢是不可控的,如果每次下載中的回調(diào)都去更新通知欄,那么可能幾百毫秒、幾十毫秒、甚至幾毫秒就更新一次通知欄,應(yīng)用可能就會(huì)ANR,甚至崩潰。
解決方案
控制通知欄更新頻率,一般控制在0.5s或者1s就可以了。在某一個(gè)更新時(shí)間間隔內(nèi)下載的進(jìn)度回調(diào)直接丟棄,需要注意的是下載完成的回調(diào),需要實(shí)時(shí)回調(diào)通知欄消息顯示下載完成。
惡心的后臺(tái)通知和“守護(hù)”通知
問(wèn)題詳情
這個(gè)坑我不愿多介紹,只說(shuō)結(jié)果。但凡存在后臺(tái)通知或者“守護(hù)”通知的應(yīng)用,在7.0系統(tǒng)以后都會(huì)原形畢露。還沒(méi)有適配7.0的應(yīng)用,可長(zhǎng)點(diǎn)心兒吧~
解決方案
請(qǐng)棄坑。
小米推送SDK接入問(wèn)題
問(wèn)題詳情
為了提升推送到達(dá),考拉接入了小米推送的SDK。小米推送分為通知欄消息和透?jìng)飨?,通知欄消息屬于系統(tǒng)級(jí)推送,在MIUI的機(jī)子上可以在進(jìn)程被殺死的情況下也能收到應(yīng)用推送。然而有個(gè)問(wèn)題,小米認(rèn)為應(yīng)用在前臺(tái)時(shí),不會(huì)回調(diào)任何方法;小米認(rèn)為應(yīng)用在后臺(tái)的時(shí)候,收到通知欄消息的同時(shí),會(huì)回調(diào)onNotificationMessageArrived方法。這時(shí)候就要小心翼翼地處理這條消息了。因?yàn)槿绻愕膽?yīng)用前后臺(tái)判斷邏輯和小米的不一樣,那么就有可能小米幫你發(fā)了一條通知欄消息,你自己又發(fā)了一遍,造成通知欄消息的重復(fù)發(fā)送(這個(gè)坑考拉踩過(guò)T_T)。另一方面,在7.0系統(tǒng)的機(jī)子上,主標(biāo)題和小圖標(biāo)的顏色是可以改變的,目前小米推送SDK沒(méi)有開(kāi)放這個(gè)接口供調(diào)用方定制。
解決方案
目前只能解決第一個(gè)問(wèn)題——前后臺(tái)判斷的問(wèn)題。應(yīng)用是否在后臺(tái)可以根據(jù)以下代碼進(jìn)行判斷。在Android 5.0以上,可以通過(guò)ActivityManager.RunningAppProcessInfo判斷,Android 5.0及以下版本通過(guò)ActivityManager.RunningTaskInfo判斷。經(jīng)測(cè)試,這個(gè)方案在Android 4.4以上結(jié)果是可以完全匹配的。
public static boolean isAppInBackgroundInternal(Context context) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { ListrunningProcesses = manager.getRunningAppProcesses(); if (!ListUtils.isEmpty(runningProcesses)) { for (ActivityManager.RunningAppProcessInfo runningProcess : runningProcesses) { if (runningProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { return false; } } } } else { List task = manager.getRunningTasks(1); if (!ListUtils.isEmpty(task)) { ComponentName info = task.get(0).topActivity; if (null != info) { return !isKaolaProcess(info.getPackageName()); } } } return true;
}
Android通知欄適配
RemoteViews適配
由于系統(tǒng)自帶的通知欄消息樣式不能完全滿(mǎn)足產(chǎn)品們腦洞大開(kāi)的需求,有時(shí)候我們需要自定義布局樣式展示通知欄消息。Android系統(tǒng)可以將自定義布局通過(guò)setContent(7.X系統(tǒng)推薦使用setCustomContentView)設(shè)置到Notification.Builder中,來(lái)實(shí)現(xiàn)樣式的更變。setContent方法需要傳入一個(gè)RemoteViews對(duì)象,它是一個(gè)普通的數(shù)據(jù)類(lèi)型,不是View,作用是供其他進(jìn)程展示視圖。RemoteViews只支持4種基本的布局^9:
FrameLayout
LinearLayout
RelativeLayout
GridLayout
這些布局下面只支持幾種視圖控件:
AnalogClock
Button
Chronometer
ImageButton
ImageView
ProgressBar
TextView
ViewFlipper
ListView
GridView
StackView
AdapterViewFlipper
只能通過(guò)上述組合生成一個(gè)RemoteViews。
自定義布局與視圖
除了上面提到的布局與控件,有沒(méi)有辦法自定義布局與視圖呢?我們知道,任何一個(gè)View,都可以生成一個(gè)Bitmap對(duì)象,支持的視圖控件里有ImageView,可以通過(guò)ImageView.setBitmapResource()將自定義視圖設(shè)置到一個(gè)ImageView中,然后再隨便放到一個(gè)布局上,就可以實(shí)現(xiàn)通知欄消息的任意布局。理想是美好的,但現(xiàn)實(shí)是殘酷的。使用這種方式自定義的布局,會(huì)存在與原生的通知欄消息樣式不一致的可能,包括小圖標(biāo)/大圖標(biāo)的大小,字體的大小與顏色,時(shí)間的顯示方式(不同版本的時(shí)間顯示位置和樣式都不一樣)。下面解決一個(gè)最關(guān)鍵,也最致命的問(wèn)題——字體顏色。如果字體顏色和背景顏色一樣,那這條通知欄消息就沒(méi)法看了,如RemoteViews顯示異常一節(jié)介紹的一樣。
解決字體顏色和背景顏色一樣的問(wèn)題有三種解決方案,分別是:
背景色固定不透明,字體顏色與背景色形成反差。(360和京東的做法)
背景色透明,字體顏色采用系統(tǒng)原生的notification_style。
背景色透明,通過(guò)特殊方式拿到通知欄字體顏色和字體大小。
其中,第一種方案簡(jiǎn)單,能夠兼容所有廠商機(jī)型。例如京東固定背景色為黑色,字體為紅色。這種方式的唯一缺陷是樣式上不能與普通通知欄消息重合,在白色背景的通知欄上極為顯眼。第二種方式,通過(guò)閱讀源碼可知,系統(tǒng)的通知欄標(biāo)題和內(nèi)容采用的顏色分別是@android:color/primary_text_dark和@android:color/secondary_text_dark,但踩過(guò)坑之后發(fā)現(xiàn)并非所有的機(jī)型默認(rèn)都是這兩個(gè)顏色,有可能獲取不到值。因此這種方案只能作為參考,不能用于實(shí)際環(huán)境中。最后詳細(xì)介紹一下第三種方式。
原文:Android通知欄介紹與適配總結(jié)(上篇)
相關(guān)閱讀:Android通知欄介紹與適配總結(jié)(下篇)
免費(fèi)領(lǐng)取驗(yàn)證碼、內(nèi)容安全、短信發(fā)送、直播點(diǎn)播體驗(yàn)包及云服務(wù)器等套餐
更多網(wǎng)易技術(shù)、產(chǎn)品、運(yùn)營(yíng)經(jīng)驗(yàn)分享請(qǐng)點(diǎn)擊。
文章來(lái)源: 網(wǎng)易云社區(qū)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25294.html
摘要:適配的原則是優(yōu)先黑名單和深灰名單,淺灰名單在官方未有替代之前可以暫時(shí)不適配,在上運(yùn)行也不會(huì)有任何問(wèn)題。除上面兩種適配方式外,音樂(lè)目前采用了另外一種方式。隱私安全保護(hù)標(biāo)識(shí)修改在中,對(duì)隱私保護(hù)又做了更加嚴(yán)格的要求。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由QQ音樂(lè)技術(shù)團(tuán)隊(duì)發(fā)表于云+社區(qū)專(zhuān)欄 上篇:Android P 行為變更適配 Android P 這次有很多行...
閱讀 3044·2021-11-02 14:40
閱讀 854·2019-08-30 15:53
閱讀 1273·2019-08-30 15:53
閱讀 3269·2019-08-30 13:53
閱讀 3313·2019-08-29 12:50
閱讀 1142·2019-08-26 13:49
閱讀 1874·2019-08-26 12:20
閱讀 3672·2019-08-26 11:33