SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Windows市集應用程式最佳實踐

蔡孟儒 (Raymond)
技術推廣協理
台灣微軟
http://blogs.msdn.com/mengtsai
主題
•   「分享」(Share Contract)
•   「搜尋」(Search Contract)                    妥善利用 Windows 8
•   右側工具列 (Charms Bar)                       系統功能
•   如何儲存使用者個人設定? (Roaming 應用)
•   取得目前位置 (Geolocation)
•   使用 WebView 的眉角
•   取得及處理 JSON 資料
•   其他:
    –   播放音樂或音效 (MediaElement)               活用 WinRT 元件
    –   選取本地或需端檔案 (FilePicker)
    –   背景執行或下載 (Background Task/Transfer)
    –   動態磚 (Live Tile)
    –   銷定畫面資訊 (RTC Apps)
Windows Store App 可以「分享」出
去的內容格式包括以下七種:
•   純文字 (Plain Text)
•   格式化文字
•   統一資源識別元 (URI)
•   HTML
•   點陣圖 (Bitmap)
•   檔案
•   開發人員定義的資料

               你可以任意組合以上的幾種內容來作分享,比如你想分享一段
               純文字加上一個URI連結、或是想分享一張圖片;那麼可以接
               受這個組合的 Targeted Apps 就會出現在右方,讓使用者作選
               擇。
只需要處理一個事件 + 設定一個物件…

• DataTransferManager.DataR
  equested 事件

• DataPackage 物件
   – 許多的 Set 方法!
實作 Share Contract
• 在你想要提供分享功能的某個頁面(.xaml),其中的LoadState()方法,
  加入OnDataRequested 事件 event handler:




• 再實作這個 OnDataRequested() 方法- 把資料塞進DataPackaget 物件
Search Contract 實作 (一)
• 在專案中新增一個「搜尋合約」的新項目,預設會產生一個新頁面
  (SearchResultsPage1.xaml),拉入你想呈現的UI控制項:
Search Contract 實作 (一)
• 實作新頁面Filter_SelectionChanged() 方法:
Search Contract 實作 (二)
• 更常見的搜尋,是讓使用者能直接搜尋此 App 的內容
  (context)
 1.   在欲提供搜尋功能的頁面中加入QuerySubmitted() event hander
 2.   再實作此 QuerySubmitted() 方法即可
Search Contract 實作 (二)
• 以 Blog Reader App 為例,我想在二個不同的頁面實作搜尋:
最常見的退件原因- 隱私權宣告
• 4.1.1 如果您的應用程式具備網路通訊功能,則必須包含隱私權聲明
  – 簡單來說,只要您的App內有宣告使用網際網路(Internet)、網路攝影機
    (WebCam)或個人文件庫(Documents Library),就必預提供隱私權聲明
  – 而您若是以Visual Studio 2012的範本來開發的話,請注意使用網際網路的
    宣告預設是打開的喔!
實作: 在Charms Bar 「設定」中加入
隱私權條款的連結
• 在App.xaml.cs 中加入SettingsPane.OnCommandsRequested() event
  handler,並實作此方法即可
var localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
localSettings.Values["currentPage"] = MyBook.CurrentPage;


var roamingSettings =
Windows.Storage.ApplicationData.Current.RoamingSettings;
roamingSettings.Values["currentPage"] = MyBook.CurrentPage;
如何取得所在位置經緯度?
•   只需要 GetGeopositionAsync() 取得位置,再以Coordinate.Latitude/Longtitude
    取得緯度及經度。
•   由於這個方法是一個 Async call,所以你需要在呼叫這個方法的函式之前加
    上 async 的宣告,否則會發生編譯錯誤
咦? Compile error?
WinRT 資訊: The required device capability has not been declared in the manifest.
其他資訊: 存取被拒。 (發生例外狀況於 HRESULT: 0x80070005 (E_ACCESSDENIED))
Manifest 宣告
• 請記得於.manifest中勾選位置(Location)的設定
請記得處理無GPS服務或未開啟的情
形
• 否則會被退件…
Ten Things You Need to Know About WebView
By Matt Small

1. WebView is not a general-purpose browser
   – WebView 這個控制項的目的,是讓你能在 App 裡,連結到
     某特定的網頁,以達到此 App 所欲提供的功能;而非讓使用
     者能任意瀏覽任何網頁。
   – 舉例來說,如果有些特定資訊可能會時常變動 (如即時路況
     等),與其重新上架你的 App,將這資訊放在 WebView 當然
     比較適當;
   – 但如果你的 App 只是純粹作為一個入口,僅是讓使用者透過
     WebView 瀏覽到某個網站首頁,再讓使用者在網站中任意點
     選連結的話,是非常有可能在上架審查中被退件的。



                           中文提要: http://blogs.msdn.com/b/mengtsai/archive/2013/03/12/webview-10.aspx
Ten Things You Need to Know About WebView
By Matt Small

3. WebView doesn’t do Flash. Or Silverlight. Or PDF. Or any
other ActiveX control or plugin.
   – 如第1點,WebView 並非被設計成為一個完整的瀏覽器,也為了穩
     定性及效能的原因並不支援 Flash, Silverlight, PDF or ActiveX,「目
     前」亦不支援某些 HTML5 的功能,如 AppCache, IndexedDB,
     programmatic access to the Clipboard, or geolocation.




                             中文提要: http://blogs.msdn.com/b/mengtsai/archive/2013/03/12/webview-10.aspx
Ten Things You Need to Know About WebView
By Matt Small

4. How to invoke Javascript inside the displayed webpage of a
Webview
   – 簡單來說 WebView 可以透過 ms-appx-web 讀取並展示已包含在你
     的 App 專案中的 HTML 檔案,甚至執行其中的 JavaScript 副程式。




                             中文提要: http://blogs.msdn.com/b/mengtsai/archive/2013/03/12/webview-10.aspx
以台北市政府公開資料平台為例
取得JSON資料




• 同時發現此JSON為一含多個物件 (objects) 之陣列 (arrays)
"[{"name":"?陽百貨事業股份有限公司松山運動中心分公司","certification_category":"游泳場所業
","tel":"66176789","traffic_info":null,"display_addr":"敦化北路1號","poi_addr":"台北市敦化北路1號
","X":"121.55009632378471","Y":"25.04896725734926"},{"name":"臺北市大同運動中心 游泳館
","certification_category":"游泳場所業","tel":"25920055","traffic_info":null,"display_addr":"大龍街51號","poi_addr":"
台北市大龍街51號","X":"121.5160557692793","Y":"25.064827690815896"},{"name":"博嘉運動公園
","certification_category":"游泳場所業","tel":"22395494","traffic_info":null,"display_addr":"木柵路4段159巷16號
","poi_addr":"台北市木柵路四段159巷16號","X":"121.5755454950648","Y":"25.001056913828617"},{"name":"洲美運
動公園游泳館","certification_category":"游泳場所業","tel":"28340998","traffic_info":null,"display_addr":"洲美街271號
Parsing JSON
– 使用Windows.Data.Json




               http://msdn.microsoft.com/zh-
               tw/library/windows/apps/xaml/hh770289.aspx
http://json2csharp.com
- 將JSON obejcts 轉為C# objects 的小工具
小結                          宣告合適的event handler, 再實作
                                其事件處理方法

                                   存取 user-specific 資料;
•   「分享」(Share Contract)         可結合Microsoft ID 跨裝置同步
•   「搜尋」(Search Contract)                            妥善利用 Windows 8
•   右側工具列 (Charms Bar)                               系統功能
•   如何儲存使用者個人設定? (Roaming 應用)
•   取得目前位置 (Geolocation)      注意 Manifest 宣告, async/await 及例外處理
•   使用 WebView 的眉角
                          非完整瀏覽器
•   取得及處理 JSON 資料
•   其他:                     Json.Net or
    –   播放音樂或音效 (MediaElement) Windows.Data.Json   活用 WinRT 元件
    –   選取本地或需端檔案 (FilePicker)
    –   背景執行或下載 (Background Task/Transfer)
    –   動態磚 (Live Tile)
    –   銷定畫面資訊 (RTC Apps)
而是創意

再加上永遠可以更好的使用者經驗 (UX)
Reference
• MSDN Windows 8 開發總站 (sample code, 文
  件, Apps 上架, etc.):
  – http://dev.windows.com
• 部落格 (中文, sample code, 上架眉角, etc.)
  – http://blogs.msdn.com/mengtsai
APPENDIX
Windows Store Apps 現況
•   Windows 8 到底賣的好不好?
•   Windows Store 上有多少 Apps?
•   有排名嗎? Distimo.com, MetroScan, MSN, etc.
•   Windows Store 上架秘訣?
Dev camps   Windows Store App 市集應用程式最佳實踐
Dev camps   Windows Store App 市集應用程式最佳實踐
Dev camps   Windows Store App 市集應用程式最佳實踐
Dev camps   Windows Store App 市集應用程式最佳實踐

Weitere ähnliche Inhalte

Andere mochten auch

Windows 市集應用程式 開發心得分享 -twMVC#6
Windows 市集應用程式 開發心得分享 -twMVC#6Windows 市集應用程式 開發心得分享 -twMVC#6
Windows 市集應用程式 開發心得分享 -twMVC#6twMVC
 
Azure mobileservice
Azure mobileservice Azure mobileservice
Azure mobileservice twMVC
 
線上遊戲利用 Dev ops 開源工具 chef, docker, vagrant 在microsoft azure 的佈署實踐-Global Azure...
線上遊戲利用 Dev ops 開源工具 chef, docker, vagrant 在microsoft azure 的佈署實踐-Global Azure...線上遊戲利用 Dev ops 開源工具 chef, docker, vagrant 在microsoft azure 的佈署實踐-Global Azure...
線上遊戲利用 Dev ops 開源工具 chef, docker, vagrant 在microsoft azure 的佈署實踐-Global Azure...twMVC
 
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場twMVC
 
一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18twMVC
 
雲端上的資訊安全-Global Azure Bootcamp 2015 臺北場
雲端上的資訊安全-Global Azure Bootcamp 2015 臺北場雲端上的資訊安全-Global Azure Bootcamp 2015 臺北場
雲端上的資訊安全-Global Azure Bootcamp 2015 臺北場twMVC
 
讓應用程式雲端化 由 Iaa s 邁向 paas 之路-Global Azure Bootcamp 2015 臺北場
讓應用程式雲端化 由 Iaa s 邁向 paas 之路-Global Azure Bootcamp 2015 臺北場讓應用程式雲端化 由 Iaa s 邁向 paas 之路-Global Azure Bootcamp 2015 臺北場
讓應用程式雲端化 由 Iaa s 邁向 paas 之路-Global Azure Bootcamp 2015 臺北場twMVC
 
專案分層架構 twMVC#18
專案分層架構 twMVC#18專案分層架構 twMVC#18
專案分層架構 twMVC#18twMVC
 

Andere mochten auch (8)

Windows 市集應用程式 開發心得分享 -twMVC#6
Windows 市集應用程式 開發心得分享 -twMVC#6Windows 市集應用程式 開發心得分享 -twMVC#6
Windows 市集應用程式 開發心得分享 -twMVC#6
 
Azure mobileservice
Azure mobileservice Azure mobileservice
Azure mobileservice
 
線上遊戲利用 Dev ops 開源工具 chef, docker, vagrant 在microsoft azure 的佈署實踐-Global Azure...
線上遊戲利用 Dev ops 開源工具 chef, docker, vagrant 在microsoft azure 的佈署實踐-Global Azure...線上遊戲利用 Dev ops 開源工具 chef, docker, vagrant 在microsoft azure 的佈署實踐-Global Azure...
線上遊戲利用 Dev ops 開源工具 chef, docker, vagrant 在microsoft azure 的佈署實踐-Global Azure...
 
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
 
一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18
 
雲端上的資訊安全-Global Azure Bootcamp 2015 臺北場
雲端上的資訊安全-Global Azure Bootcamp 2015 臺北場雲端上的資訊安全-Global Azure Bootcamp 2015 臺北場
雲端上的資訊安全-Global Azure Bootcamp 2015 臺北場
 
讓應用程式雲端化 由 Iaa s 邁向 paas 之路-Global Azure Bootcamp 2015 臺北場
讓應用程式雲端化 由 Iaa s 邁向 paas 之路-Global Azure Bootcamp 2015 臺北場讓應用程式雲端化 由 Iaa s 邁向 paas 之路-Global Azure Bootcamp 2015 臺北場
讓應用程式雲端化 由 Iaa s 邁向 paas 之路-Global Azure Bootcamp 2015 臺北場
 
專案分層架構 twMVC#18
專案分層架構 twMVC#18專案分層架構 twMVC#18
專案分層架構 twMVC#18
 

Ähnlich wie Dev camps Windows Store App 市集應用程式最佳實踐

OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
移动Web开发框架jqm探讨
移动Web开发框架jqm探讨移动Web开发框架jqm探讨
移动Web开发框架jqm探讨newker
 
赶集团购开发总结4
赶集团购开发总结4赶集团购开发总结4
赶集团购开发总结4yangdj
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》easychen
 
前端性能测试
前端性能测试前端性能测试
前端性能测试tbmallf2e
 
Html5和css3入门
Html5和css3入门Html5和css3入门
Html5和css3入门Xiujun Ma
 
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 yangdj
 
Axure RP Prototyping Tool
Axure RP Prototyping ToolAxure RP Prototyping Tool
Axure RP Prototyping ToolSouyi Yang
 
使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心Du Yamin
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsChieh Lin
 
Android 4-app
Android 4-appAndroid 4-app
Android 4-applydiafly
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
非常靠谱 Html 5
非常靠谱 Html 5 非常靠谱 Html 5
非常靠谱 Html 5 Tony Deng
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)Will Huang
 
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器iflytek
 
Web dev road map part one
Web dev road map part oneWeb dev road map part one
Web dev road map part one安 闫
 
前端性能优化和自动化
前端性能优化和自动化前端性能优化和自动化
前端性能优化和自动化kaven yan
 

Ähnlich wie Dev camps Windows Store App 市集應用程式最佳實踐 (20)

OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
Berserk js
Berserk jsBerserk js
Berserk js
 
Html5
Html5Html5
Html5
 
移动Web开发框架jqm探讨
移动Web开发框架jqm探讨移动Web开发框架jqm探讨
移动Web开发框架jqm探讨
 
赶集团购开发总结4
赶集团购开发总结4赶集团购开发总结4
赶集团购开发总结4
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
 
前端性能测试
前端性能测试前端性能测试
前端性能测试
 
Html5和css3入门
Html5和css3入门Html5和css3入门
Html5和css3入门
 
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结
 
Axure RP Prototyping Tool
Axure RP Prototyping ToolAxure RP Prototyping Tool
Axure RP Prototyping Tool
 
使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
 
Android 4-app
Android 4-appAndroid 4-app
Android 4-app
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
非常靠谱 Html 5
非常靠谱 Html 5 非常靠谱 Html 5
非常靠谱 Html 5
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
 
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
 
Web dev road map part one
Web dev road map part oneWeb dev road map part one
Web dev road map part one
 
敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3
 
前端性能优化和自动化
前端性能优化和自动化前端性能优化和自动化
前端性能优化和自动化
 

Mehr von Meng-Ru (Raymond) Tsai

Microsoft Generative AI and Medical case studies.
Microsoft Generative AI and Medical case studies.Microsoft Generative AI and Medical case studies.
Microsoft Generative AI and Medical case studies.Meng-Ru (Raymond) Tsai
 
20211119 ntuh azure hpc workshop final
20211119 ntuh azure hpc workshop final20211119 ntuh azure hpc workshop final
20211119 ntuh azure hpc workshop finalMeng-Ru (Raymond) Tsai
 
202002 DIGI+Talent數位網路學院線上課程: 五大領堿先修課
202002 DIGI+Talent數位網路學院線上課程: 五大領堿先修課202002 DIGI+Talent數位網路學院線上課程: 五大領堿先修課
202002 DIGI+Talent數位網路學院線上課程: 五大領堿先修課Meng-Ru (Raymond) Tsai
 
20171024 文化大學 1 azure big data ai
20171024 文化大學 1 azure big data ai20171024 文化大學 1 azure big data ai
20171024 文化大學 1 azure big data aiMeng-Ru (Raymond) Tsai
 
2 module07 cognitive services and the bot framework
2 module07 cognitive services and the bot framework2 module07 cognitive services and the bot framework
2 module07 cognitive services and the bot frameworkMeng-Ru (Raymond) Tsai
 
20170123 外交學院 大數據趨勢與應用
20170123 外交學院 大數據趨勢與應用20170123 外交學院 大數據趨勢與應用
20170123 外交學院 大數據趨勢與應用Meng-Ru (Raymond) Tsai
 
20160525 跨界新識力沙龍論壇 機器學習與跨業應用展望
20160525 跨界新識力沙龍論壇 機器學習與跨業應用展望20160525 跨界新識力沙龍論壇 機器學習與跨業應用展望
20160525 跨界新識力沙龍論壇 機器學習與跨業應用展望Meng-Ru (Raymond) Tsai
 
20170108 微軟大數據整合解決方案- cortana intelligence suite
20170108 微軟大數據整合解決方案- cortana intelligence suite20170108 微軟大數據整合解決方案- cortana intelligence suite
20170108 微軟大數據整合解決方案- cortana intelligence suiteMeng-Ru (Raymond) Tsai
 
20160323 台大 微軟學生大使招生分享會
20160323 台大 微軟學生大使招生分享會20160323 台大 微軟學生大使招生分享會
20160323 台大 微軟學生大使招生分享會Meng-Ru (Raymond) Tsai
 
20160304 blockchain in fsi client ready raymond
20160304 blockchain in fsi client ready raymond20160304 blockchain in fsi client ready raymond
20160304 blockchain in fsi client ready raymondMeng-Ru (Raymond) Tsai
 
20151016 中興大學 big data + machine learning
20151016 中興大學 big data + machine learning20151016 中興大學 big data + machine learning
20151016 中興大學 big data + machine learningMeng-Ru (Raymond) Tsai
 

Mehr von Meng-Ru (Raymond) Tsai (20)

Microsoft Generative AI and Medical case studies.
Microsoft Generative AI and Medical case studies.Microsoft Generative AI and Medical case studies.
Microsoft Generative AI and Medical case studies.
 
20211119 ntuh azure hpc workshop final
20211119 ntuh azure hpc workshop final20211119 ntuh azure hpc workshop final
20211119 ntuh azure hpc workshop final
 
202002 DIGI+Talent數位網路學院線上課程: 五大領堿先修課
202002 DIGI+Talent數位網路學院線上課程: 五大領堿先修課202002 DIGI+Talent數位網路學院線上課程: 五大領堿先修課
202002 DIGI+Talent數位網路學院線上課程: 五大領堿先修課
 
20190627 ai+blockchain
20190627 ai+blockchain20190627 ai+blockchain
20190627 ai+blockchain
 
20171024 文化大學 1 azure big data ai
20171024 文化大學 1 azure big data ai20171024 文化大學 1 azure big data ai
20171024 文化大學 1 azure big data ai
 
20171024 文化大學 2 big data ai
20171024 文化大學 2 big data ai20171024 文化大學 2 big data ai
20171024 文化大學 2 big data ai
 
20180126 microsoft ai on healthcare
20180126 microsoft ai on healthcare20180126 microsoft ai on healthcare
20180126 microsoft ai on healthcare
 
20170330 彰基 azure healthcare
20170330 彰基 azure healthcare20170330 彰基 azure healthcare
20170330 彰基 azure healthcare
 
4 module09 iot
4 module09 iot4 module09 iot
4 module09 iot
 
3 module06 monitoring
3 module06 monitoring3 module06 monitoring
3 module06 monitoring
 
2 module07 cognitive services and the bot framework
2 module07 cognitive services and the bot framework2 module07 cognitive services and the bot framework
2 module07 cognitive services and the bot framework
 
1 module04 dev ops
1 module04 dev ops1 module04 dev ops
1 module04 dev ops
 
20170123 外交學院 大數據趨勢與應用
20170123 外交學院 大數據趨勢與應用20170123 外交學院 大數據趨勢與應用
20170123 外交學院 大數據趨勢與應用
 
20160525 跨界新識力沙龍論壇 機器學習與跨業應用展望
20160525 跨界新識力沙龍論壇 機器學習與跨業應用展望20160525 跨界新識力沙龍論壇 機器學習與跨業應用展望
20160525 跨界新識力沙龍論壇 機器學習與跨業應用展望
 
20170108 微軟大數據整合解決方案- cortana intelligence suite
20170108 微軟大數據整合解決方案- cortana intelligence suite20170108 微軟大數據整合解決方案- cortana intelligence suite
20170108 微軟大數據整合解決方案- cortana intelligence suite
 
20160930 bot framework workshop
20160930 bot framework workshop20160930 bot framework workshop
20160930 bot framework workshop
 
20160930 bot framework workshop
20160930 bot framework workshop20160930 bot framework workshop
20160930 bot framework workshop
 
20160323 台大 微軟學生大使招生分享會
20160323 台大 微軟學生大使招生分享會20160323 台大 微軟學生大使招生分享會
20160323 台大 微軟學生大使招生分享會
 
20160304 blockchain in fsi client ready raymond
20160304 blockchain in fsi client ready raymond20160304 blockchain in fsi client ready raymond
20160304 blockchain in fsi client ready raymond
 
20151016 中興大學 big data + machine learning
20151016 中興大學 big data + machine learning20151016 中興大學 big data + machine learning
20151016 中興大學 big data + machine learning
 

Dev camps Windows Store App 市集應用程式最佳實踐

  • 2. 主題 • 「分享」(Share Contract) • 「搜尋」(Search Contract) 妥善利用 Windows 8 • 右側工具列 (Charms Bar) 系統功能 • 如何儲存使用者個人設定? (Roaming 應用) • 取得目前位置 (Geolocation) • 使用 WebView 的眉角 • 取得及處理 JSON 資料 • 其他: – 播放音樂或音效 (MediaElement) 活用 WinRT 元件 – 選取本地或需端檔案 (FilePicker) – 背景執行或下載 (Background Task/Transfer) – 動態磚 (Live Tile) – 銷定畫面資訊 (RTC Apps)
  • 3.
  • 4. Windows Store App 可以「分享」出 去的內容格式包括以下七種: • 純文字 (Plain Text) • 格式化文字 • 統一資源識別元 (URI) • HTML • 點陣圖 (Bitmap) • 檔案 • 開發人員定義的資料 你可以任意組合以上的幾種內容來作分享,比如你想分享一段 純文字加上一個URI連結、或是想分享一張圖片;那麼可以接 受這個組合的 Targeted Apps 就會出現在右方,讓使用者作選 擇。
  • 5. 只需要處理一個事件 + 設定一個物件… • DataTransferManager.DataR equested 事件 • DataPackage 物件 – 許多的 Set 方法!
  • 6. 實作 Share Contract • 在你想要提供分享功能的某個頁面(.xaml),其中的LoadState()方法, 加入OnDataRequested 事件 event handler: • 再實作這個 OnDataRequested() 方法- 把資料塞進DataPackaget 物件
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. Search Contract 實作 (一) • 在專案中新增一個「搜尋合約」的新項目,預設會產生一個新頁面 (SearchResultsPage1.xaml),拉入你想呈現的UI控制項:
  • 12. Search Contract 實作 (一) • 實作新頁面Filter_SelectionChanged() 方法:
  • 13.
  • 14. Search Contract 實作 (二) • 更常見的搜尋,是讓使用者能直接搜尋此 App 的內容 (context) 1. 在欲提供搜尋功能的頁面中加入QuerySubmitted() event hander 2. 再實作此 QuerySubmitted() 方法即可
  • 15. Search Contract 實作 (二) • 以 Blog Reader App 為例,我想在二個不同的頁面實作搜尋:
  • 16.
  • 17.
  • 18.
  • 19. 最常見的退件原因- 隱私權宣告 • 4.1.1 如果您的應用程式具備網路通訊功能,則必須包含隱私權聲明 – 簡單來說,只要您的App內有宣告使用網際網路(Internet)、網路攝影機 (WebCam)或個人文件庫(Documents Library),就必預提供隱私權聲明 – 而您若是以Visual Studio 2012的範本來開發的話,請注意使用網際網路的 宣告預設是打開的喔!
  • 20. 實作: 在Charms Bar 「設定」中加入 隱私權條款的連結 • 在App.xaml.cs 中加入SettingsPane.OnCommandsRequested() event handler,並實作此方法即可
  • 21.
  • 22.
  • 23.
  • 24.
  • 25. var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; localSettings.Values["currentPage"] = MyBook.CurrentPage; var roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; roamingSettings.Values["currentPage"] = MyBook.CurrentPage;
  • 26.
  • 27.
  • 28. 如何取得所在位置經緯度? • 只需要 GetGeopositionAsync() 取得位置,再以Coordinate.Latitude/Longtitude 取得緯度及經度。 • 由於這個方法是一個 Async call,所以你需要在呼叫這個方法的函式之前加 上 async 的宣告,否則會發生編譯錯誤
  • 29. 咦? Compile error? WinRT 資訊: The required device capability has not been declared in the manifest. 其他資訊: 存取被拒。 (發生例外狀況於 HRESULT: 0x80070005 (E_ACCESSDENIED))
  • 32.
  • 33.
  • 34. Ten Things You Need to Know About WebView By Matt Small 1. WebView is not a general-purpose browser – WebView 這個控制項的目的,是讓你能在 App 裡,連結到 某特定的網頁,以達到此 App 所欲提供的功能;而非讓使用 者能任意瀏覽任何網頁。 – 舉例來說,如果有些特定資訊可能會時常變動 (如即時路況 等),與其重新上架你的 App,將這資訊放在 WebView 當然 比較適當; – 但如果你的 App 只是純粹作為一個入口,僅是讓使用者透過 WebView 瀏覽到某個網站首頁,再讓使用者在網站中任意點 選連結的話,是非常有可能在上架審查中被退件的。 中文提要: http://blogs.msdn.com/b/mengtsai/archive/2013/03/12/webview-10.aspx
  • 35. Ten Things You Need to Know About WebView By Matt Small 3. WebView doesn’t do Flash. Or Silverlight. Or PDF. Or any other ActiveX control or plugin. – 如第1點,WebView 並非被設計成為一個完整的瀏覽器,也為了穩 定性及效能的原因並不支援 Flash, Silverlight, PDF or ActiveX,「目 前」亦不支援某些 HTML5 的功能,如 AppCache, IndexedDB, programmatic access to the Clipboard, or geolocation. 中文提要: http://blogs.msdn.com/b/mengtsai/archive/2013/03/12/webview-10.aspx
  • 36. Ten Things You Need to Know About WebView By Matt Small 4. How to invoke Javascript inside the displayed webpage of a Webview – 簡單來說 WebView 可以透過 ms-appx-web 讀取並展示已包含在你 的 App 專案中的 HTML 檔案,甚至執行其中的 JavaScript 副程式。 中文提要: http://blogs.msdn.com/b/mengtsai/archive/2013/03/12/webview-10.aspx
  • 37.
  • 39. 取得JSON資料 • 同時發現此JSON為一含多個物件 (objects) 之陣列 (arrays) "[{"name":"?陽百貨事業股份有限公司松山運動中心分公司","certification_category":"游泳場所業 ","tel":"66176789","traffic_info":null,"display_addr":"敦化北路1號","poi_addr":"台北市敦化北路1號 ","X":"121.55009632378471","Y":"25.04896725734926"},{"name":"臺北市大同運動中心 游泳館 ","certification_category":"游泳場所業","tel":"25920055","traffic_info":null,"display_addr":"大龍街51號","poi_addr":" 台北市大龍街51號","X":"121.5160557692793","Y":"25.064827690815896"},{"name":"博嘉運動公園 ","certification_category":"游泳場所業","tel":"22395494","traffic_info":null,"display_addr":"木柵路4段159巷16號 ","poi_addr":"台北市木柵路四段159巷16號","X":"121.5755454950648","Y":"25.001056913828617"},{"name":"洲美運 動公園游泳館","certification_category":"游泳場所業","tel":"28340998","traffic_info":null,"display_addr":"洲美街271號
  • 40. Parsing JSON – 使用Windows.Data.Json http://msdn.microsoft.com/zh- tw/library/windows/apps/xaml/hh770289.aspx
  • 41.
  • 42. http://json2csharp.com - 將JSON obejcts 轉為C# objects 的小工具
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50. 小結 宣告合適的event handler, 再實作 其事件處理方法 存取 user-specific 資料; • 「分享」(Share Contract) 可結合Microsoft ID 跨裝置同步 • 「搜尋」(Search Contract) 妥善利用 Windows 8 • 右側工具列 (Charms Bar) 系統功能 • 如何儲存使用者個人設定? (Roaming 應用) • 取得目前位置 (Geolocation) 注意 Manifest 宣告, async/await 及例外處理 • 使用 WebView 的眉角 非完整瀏覽器 • 取得及處理 JSON 資料 • 其他: Json.Net or – 播放音樂或音效 (MediaElement) Windows.Data.Json 活用 WinRT 元件 – 選取本地或需端檔案 (FilePicker) – 背景執行或下載 (Background Task/Transfer) – 動態磚 (Live Tile) – 銷定畫面資訊 (RTC Apps)
  • 52. Reference • MSDN Windows 8 開發總站 (sample code, 文 件, Apps 上架, etc.): – http://dev.windows.com • 部落格 (中文, sample code, 上架眉角, etc.) – http://blogs.msdn.com/mengtsai
  • 54. Windows Store Apps 現況 • Windows 8 到底賣的好不好? • Windows Store 上有多少 Apps? • 有排名嗎? Distimo.com, MetroScan, MSN, etc. • Windows Store 上架秘訣?

Hinweis der Redaktion

  1. Talking about appdata specifically, will talk about user data later when we look at skydrive, etc.Slide 8 from PLAT-475T
  2. 可以將User Data/settings 作roaming, 即存在雲端(非skydrive)or local drive三種roaming的資料:Application StateContentSettingsKey, app does not have to do much – whole infrastructure built for you.Writes local and system takes care of the rest – some limitations, we will cover later.Slide 8 from PLAT-475T
  3. 航海王666獵人341
  4. DirectX沒有畫在這張圖內
  5. Create a Camera Capture UI demo. Seamless integration with devices and OS resources.
  6. Maintain TCP sockets in the background