Windows Phone 8 - 修改鎖定螢幕的通知範圍
撰寫過<Windows Phone 8 - 修改鎖定螢幕的背景>與<Windows Phone 8 - Background Schedule Task改變鎖定螢幕的背景>,
接著介紹是在Lock Screen中另一個可供修改的部分,也就是通知範圍(Lock screen notifications),如下圖所示之範圍:
上述的範圍是不是很熟悉,在過去WP 7.1環境下,文字的部分只能放Calendar的內容,右下的圖示部分只能放置
電話、郵件、訊息等系統的App的圖示與Counts。
到了WP8開始,可以在Lock screen settings指定五個Apps icons顯示於Notification Area,加一個text範圍的App,
如下圖:
從細部說明來看:
‧lock screen中的app icon、count與text,來自於App的Default Tile;(secondary tile不會影響其內容)
‧lock screen中的text內容,來自於App的Default Tile包含back content的資訊;(例如:default tile上的count與text)
WP8有這樣的特性,代表開發的App需要在WMAppManifest.xml中宣告支援lock screen的intent與建立對應的icon
來提供呈現,透過Settings/lock screen畫面來設定App可呈現於該範圍。因此,接下來便說明如何實作讓自己的
App能夠支援於Notification Area設定的功能。
1. 建立適用的Lock screen icon與設定DefaultLockImageURI:(強烈建議是目前反白icon)
要呈現於lock screen的icon,其大小為38x38 PNG image,其色系必需為白色透明底(only white pixels plus level of transparency)。
繪製完圖像之後,接著需要在WMAppManifest.xml中<Token />加上定義Lock screen時使用的icon:
1-1. 修改DeviceLockImageURI的屬性,IsRelative = true,IsResource = false,指定圖示的完整路徑;
1: <Tokens>
2: <PrimaryToken TokenID="LockNotifyProjToken" TaskName="_default">
3: <TemplateFlip>
4: <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
5: <Count>0</Count>
6: <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
7: <Title>LockNotifyProj</Title>
8: <BackContent></BackContent>
9: <BackBackgroundImageURI></BackBackgroundImageURI>
10: <BackTitle></BackTitle>
11: <!-- 設定IsRelative, IsResource與Full Path -->
12: <DeviceLockImageURI IsRelative="true" IsResource="false">Assets\LockImage.png</DeviceLockImageURI>
13: <HasLarge></HasLarge>
14: </TemplateFlip>
15: </PrimaryToken>
16: </Tokens>
2. 於WMAppManifest.xml加入支援lock screen的extensions:
開啟WMAppManifest.xml於<Extensions />中加入支援lock screen notification的Extensions功能。如下:
1: <Extensions>
2: <!--
3: 定義支援Lock Screen Notification的宣告。
4: LockScreen_Notification_IconCount
5: LockScreen_Notification_TextField
6: 二者與CusumerID均為固定的值。
7: -->
8: <Extension ExtensionName="LockScreen_Notification_IconCount"
9: ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" />
10: <Extension ExtensionName="LockScreen_Notification_TextField"
11: ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" />
12: </Extensions>
LockScreen_Notification_IconCount與LockScreen_Notification_TextField二者可以依需求選擇一種使用,
如果有支援TextField的話在Settings/lock Screen畫面裡的下拉選單就可以看到,另外有支援IconCount的話,
在五個「+」中的App選項裡,也可以支援。
3. 在程式中加入可支援設定目前App為Lock screen notifications的邏輯:
另外,可以考慮在自己的App增加串聯Settings/lock screen的功能,讓用戶有更好的體驗。對於這個功能如果
有看過<Windows Phone 8 - 修改鎖定螢幕的背景>>這篇的介紹,設定lock screen notification其實不需要宣告provider,
只需透過Task的方式,讓用戶直接訪問lock screen進行設定,如下程式:
1: private async void btnGoToLockSettings_Click(object sender, RoutedEventArgs e)
2: {
3: // 宣告執行固定的 URI 進入 lock screen settings screen.
4: var op = await Windows.System.Launcher.LaunchUriAsync(
5: new Uri("ms-settings-lock:"));
6: }
固定的ms-settings-lock字段,更多可以用的字段可以參考<URI schemes for launching built-in apps for Windows Phone 8>。
[範例程式]
該範例提供修改Default Tile中的Count與Text,用於顯示於Lock screen notification中的方式。如下程式與畫面。
======
透過<Windows Phone 8 - 修改鎖定螢幕的背景>與本篇的說明後,可了解在WP8下Lock Screen裡我們的App
可以提供很多特殊的用途,聽說WP7.8一樣會有這樣的功能,只是詳細的做法目前還不知道,希望是不會
相差太遠。一起來享受WP8的新特性吧,希望對大家有所幫助。
References:
‧Lock screen notifications for Windows Phone 8 (重要)
‧Lock screen background for Windows Phone 8
‧URI schemes for launching built-in apps for Windows Phone 8 (重要)
‧[教學影片][研討會] Windows Azure Mobile Services 三部曲