分類: Uncategorized
請記得在 2013/01/31 前上傳您的 Windows Store App(s)
原因其實是因為這個 「Windows 8 App 開發者聯盟」的活動:
也就是前 200 名上傳的可以說直接取回你的 Windows Store 個人帳號註冊費! 更何況有得大獎的機會,快加緊腳步吧!
報名網址: http://www.microsoft.com/taiwan/promo/Win8AppFest/activity.aspx
(若有 Windows Store 註冊、上架等問題,解決辦法都可以在本 Blog 文章中找到)
5 分鐘讓您的 Windows Store App 具備「分享」(Share Contract) 功能
Windows 8 的一大特色: 由右側螢幕滑出來的 Charms Bar,大概是 Win8 平版電腦的使用者最常看到的畫面之一了:
其中,要在 Windows Store App 內實作「搜尋」(Search) 的功能,我已經在 “從無到有- 程式碼小於 50 行的 Windows Store App 開發及上架之旅 (程式供下載)” 以及 “將部落格轉成 Windows Store App (在 Blog Reader sample 中加入「搜尋」功能” 中簡單說明了兩種可以實行的方法。
今天的主題則是要說明如何將「分享」(Share) 的功能加到 Windows Store App之中,讓使用者可以將內容透過 Facebook, Email, Plurk, WordPress 等其他 Apps 分享出去。因為實際的 coding 實在太簡單了,所以先說明一下 Share Contract 的背景知識。
Windows Store App 可以「分享」出去的內容包括以下七種:
-
純文字 (Plain Text)
-
統一資源識別元 (URI)
-
HTML
-
格式化文字
-
點陣圖 (Bitmap)
-
檔案
-
開發人員定義的資料
你可以任意組合以上的幾種內容來作分享,比如你想分享一段純文字加上一個URI連結、或是想分享一張圖片;那麼可以接受這個組合的 Targeted Apps 就會出現在右方,讓使用者作選擇。
而以上的這七種內容,其實都是被包含在 DataPackage 這個物件之中,所以你可以看到 DataPackage 物件的所有 set* 方法其實就是在設定以上的七種內容:
除了要設定 DataPackage 這個物件之外,另一個要作的事是先取得 DataTransferManager 的目前執行個體,這個 DataTransferManager 個體會有一個 datarequested 事件,使用者點選分享時就會引發這個事件;也就是說,你只要在這個事件方法中,將 DataPackage 的七種內容作組合,你的工作就完畢了!
開始 Coding!
為方便起見,我直接拿”將部落格轉成 Windows Store App” 的這篇文章,最後完成的程式碼(按此下載)來作說明,並假設我們想分享的是其中一篇部落格文章的連結 (URI)。
第一步:因為我們想分享的是文章連結 (URI),所以我們打開 SplitPage.xaml.cs 檔來作修改。連結的資訊是存在 seletedItem: FeedItem 這個物件中,所以我們把它設為全域變數好在其他地方作處理,並記得在 LoadState() 方法中拿掉此變數的宣告。
// 將 selectedItem 設為全域變數 global variable
FeedItem selectedItem;
在 LoadState() 拿掉變數宣告後的部份程式碼如下:
第二步:在 LoadState() 方法的最後,加入一個 event handler: OnDataRequested:
// Register for DataRequested events
DataTransferManager.GetForCurrentView().DataRequested
+= OnDataRequested;
同時在 SaveState() 方法的最後,移除這個OnDataRequested 的 event handler:
// Deregister the DataRequested event handler
DataTransferManager.GetForCurrentView().DataRequested
-= OnDataRequested;
第三步:就是實作這個 onDataRequested() 了,其中我用到了 SetUri() 來設定 URI 連結:
// 實作 OnDataRequested() void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args) { var dataPackage = args.Request.Data; dataPackage.Properties.Title = selectedItem.Title + " by " + selectedItem.Author; dataPackage.Properties.Description = selectedItem.Content; dataPackage.SetUri(selectedItem.Link); }
這樣就完成囉!
你可以注意到,其中最關鍵的部份僅在於設定 DataPackage 這個物件而已 (第三步),之後 Windows 8 就會處理由使用者選擇分享、列出合適的 Target Apps,再將分享內享傳遞出去的所有過程了。以下是完成後的執行畫面:
如果要了解更詳盡的分享機制及進一步的應用,可以閱讀以下文章:
– 分享與接收內容 (使用 JavaScript 和 HTML 的 Windows 市集應用程式) (Windows)
– 快速入門:分享內容 (使用 C#/VB/C++ 和 XAML 的 Windows 市集應用程式) (Windows)
同時更多的 sample code 範例程式都可在以下找到:
Windows Store app samples (可以直接搜尋找到你想用的程式碼)
將部落格轉成 Windows Store App – 並加入「搜尋」功能
以下這個分成五個部份的 step-by-step 文章,是個學習 Windows 8 App 開發很好的出發點;而文章的第五個部份: 建立部落格閱讀程式,則提供了開發者直接將某部落格轉成 Windows 8 App 的一條捷徑。
http://msdn.microsoft.com/zh-tw/library/windows/apps/hh974581.aspx
本文的目的即是:
1. 修改 Sample Code 以讀取自訂的 Blogs RSS/Atom feeds
2. 加入Search contract 讓使用者能搜尋文章內文及部落格標題
開始 Coding!
(若想直接觀看結果或下載程式碼請至: 程式碼下載- 將 Blogs 轉為 Windows 8 App)
1. 修改 Sample Code 以讀取自訂的 Blogs RSS/Atom feeds
首先至 Windows 8 App 範例程式集散地取得 Sample Code,另外有 JavaScript 版本可供下載,以下我則以 C# 為例作說明。
下載 C# Sample Code 並解壓完畢,以 Visual Studio 2012 打開 GettingStarted_CSTutorials.sln 後,先將 WindowsBlogReader 設為起始專案,然後按 F5 ,確認可正常編譯並能順利執行及開啟第一個畫面:
接下來就要把我們想訂閱的部落格加進去了!
首先當然要準備好某個部落格的 RSS/Atom feeds,舉例而言本站文章的 RSS 即為 http://blogs.msdn.com/b/mengtsai/rss.aspx
然後在 FeedData.cs 的 GetFeedsAsync() 方法中,將您要訂閱的RSS/Atom 連結加入:
就這樣! 我們已經完成本文章的第一個目的了! 
以下是 run 起來的樣貌:
接下來是重頭戲! 當您的 Blogs 數目及文章數眾多時,提供一個合適的搜尋功能就非常重要了:
2. 加入Search contract 讓使用者能搜尋文章內文及部落格標題
要在您的 Windows Store App 加入 Search contract 有幾種不同的方式,其中一種描述在我的另一篇文章中,在這我介紹另一種方式,您只要三個步驟就能加入搜尋功能!
步驟一: 首先打開 Package.appxmanifest 檔案,並加入「搜尋」 (Search) 的宣告 (Declaration):
步驟二: 現在要作的是,讓使用者能夠搜尋某部落格的文章內文 (Content),並將含有此搜尋字串的文章列出來。因為要搜尋文章內文,我們就先打開 SplitPage.xaml.cs 檔案,然後在 SplitPage 的 constructor 中加入一個 event handler,來接收使用者由 Charms bar->搜尋->鍵入字串->然後按 Enter 的動作:
Windows.ApplicationModel.Search.SearchPane.GetForCurrentView().QuerySubmitted
+= SplitPage_QuerySubmitted;
接下來我們要將 feedData 設為全域變數 (global variable), 這樣在 SplitPage_QuerySubmitted() 方法中才能存取到這個變數,因此我們在 SplitPage class 的第一行即宣告此變數,然後記得在 LoadState() 及 SaveState() 這兩個 methods 中拿掉 feedData 的宣告:
步驟三: 就是實作 SplitPage_QuerySubmitted() 方法了:
void SplitPage_QuerySubmitted( Windows.ApplicationModel.Search.SearchPane sender, Windows.ApplicationModel.Search.SearchPaneQuerySubmittedEventArgs args) { this.DefaultViewModel["Items"] = from dynamic item in feedData.Items where item.Content.Contains(args.QueryText) select item; }
您可以看到我是使用 LINQ 語法在 feedData.Items 的 Content 中,檢查是否有吻合使用者的搜尋字串 (arg.QueryText),然後透過 DefaultViewModel 作顯示,以下是 run 起來的畫面:
你可以想見,這個搜尋的功能可以進一步的延伸下去,只要修改 LINQ 語法,並在合適的 page 之中作修改即可。
舉例而言,假設我的部落格數目非常多,我想提供使用者搜尋部落格的標題 (Title) 的話,同樣是三個步驟如下:
步驟一: 打開 ItemsPage.xaml.cs 檔案,並在 ItemsPage() 的 constructor 之中加入一個 event hander :
Windows.ApplicationModel.Search.SearchPane.GetForCurrentView().QuerySubmitted
+= ItemsPage_QuerySubmitted;
步驟二: 將 feedDataSource 設為全域變數並在 LoadData() 中將宣告拿掉。
步驟三: 實作 ItemsPage_QuerySubmitted() 方法如下,您會注意到我修改了 LINQ statement ,改由在 feedDataSource.Feeds 中找尋 Title (標題):
void ItemsPage_QuerySubmitted(
Windows.ApplicationModel.Search.SearchPane sender,
Windows.ApplicationModel.Search.SearchPaneQuerySubmittedEventArgs args)
{
this.DefaultViewModel["Items"] = from dynamic item in feedDataSource.Feeds
where
item.Title.Contains(args.QueryText)
select item;
}
完成之後,搜尋部落格標題的結果如下:
We are done! 
程�����碼下載 (Source Code download)
Windows Store App 上架步驟 (及竅門分享)
Windows 8 App 是統一透過https://appdev.microsoft.com/StorePortals/ 網站作上傳,過程中基本上不會遇到什麼困難,因為步驟由上到下非常簡明易懂;若要知道各步驟的詳細說明,則可以見Windows 8 App 上傳步驟的分享。
以下則是列出一些請大家特別注易的眉角:
第一: 應用程式名稱
如您所見,應用程式名稱可以在 App 還沒開發完畢前就先行註冊! 而且可以保留一年;也就是說您心中若有理想的 App 名稱,是有可能被別人捷足先登喔! 另外,應用程式名稱取得好壞與否常常攸關被搜尋到的機會及下載量,這部份請務必作好選擇。
第二: 設定「試用版」(適用於付費軟體)
若您的 App 是要收費的話,在“銷售詳細資料”的步驟中,強烈建議您設定「免費試用期」;這樣您的App出現在 Windows Store 市集時,會多出一個「試用版」的選項讓使用者下載。
由Windows Phone marketplace 上的經驗,這麼作平均會提升70倍的下載量及10倍的總付費數目!
第三: 若您是遊戲類 App
而且有選擇在台灣市場上市的話,就要遵循台灣的分級法規上傳CSRR憑證檔案。詳細的作法請參考: 開發Windows 8 遊戲App? 教您如何符合台灣遊戲軟體分級規定。
第四: 請填寫「測試人員注意事項」
如果要讓您的App能順利過關,強烈建議要填寫此項目,簡單告訴測試人員(用英文)如何操作您的App。
上傳完畢之後,你就可以隨時在「儀表版」(Dashboard )中查看 App 的審核進度,同時也會收到 Email 通知審核結果。
以我的例子而言,我於2012/9月就註冊 Windows Store 帳號,一直到2012年底都沒有完成信用卡身份驗證的部份,所以 App 上傳後就看到了以下的畫面,其中紅字的部份為: “在您驗證付款方式之前,我們無法在市集中列出您的應用程式。”
我完成驗證的方法請見信用卡驗證文章分享。
完成驗證之後,就靜待審核通知了!
附記:
(我這個小App是在2012/12/31晚上完成上傳,在2013/01/03就收到 Email 通知已通過審核了,但我的個人經驗不代表每個 App 的狀況喔!)
台北市公車動態 Windows Store App 下載 http://apps.microsoft.com/windows/zh-TW/app/6361e437-53ea-4dfe-9042-72f32ddd0643
從無到有- 程式碼小於 50 行的 Windows Store App 開發及上架之旅 (程式供下載)
本計畫是: 要趁著在 2012 年底時,撰寫一個程式碼小於50行的簡單小程式,並且將整個開發過程及上架流程作一個記錄讓大家參考:
首先我的 App 名稱為”台北市公車動態”,目標客戶是針對台北市的公車一族,讓他們能:
1. 隨時查詢想搭公車的預估到站時間。
2. 可以將常用公車加到「我的最愛」之中;同時希望讓使用者即便使用不同的裝置,也能看到一樣的「我的最愛」公車列表。
3. 實作「搜尋」合約,讓使用者可直接透過右側常用工具列 (Charms Bar) 來直接搜尋公車動態。
我首先簡單勾勒一下 App 的未來主畫面如下:
開始coding!
於 Visual Studio 2012 中開啟一個 C# 的空白 Windows 市集專案,打開 MainPage.xaml ,將以上的控制項由左側的「工具箱」中直接拉入設計畫面中,接下來在各控制項之中加入 x:Name 參數,以方便日後在程式碼中能直接操作這些控制項。
接下來我需要台北市的公車列表清單,這資料可以在台北市公車動態資訊的公開網站 (http://pda.5284.com.tw/MQS/businfo1.jsp) 中找到,只要在此網站中按右鍵->檢視原始檔,就會看到一個 routeArray 變數中含有完整的公車列表:
直接拷貝這個 routeArray 清單,然後在 MainPage.xaml.cs 的 OnNavigatedTo() 方法中加到 comboBusLine 控制項中:
protected override void OnNavigatedTo(NavigationEventArgs e) { string[] routeArray = { "0南", "0東", "1", "108", "108區(二子坪)", "以下省略"}; for(int i = 0; i < routeArray.Length; i++) { comboBusLines.Items.Add(routeArray[i]); } comboBusLines.SelectedIndex = 0; }
我們要到哪裡查詢公車即時動態呢? 我發現在 http://pda.5284.com.tw 的網站中,查詢公車動態頁面的Url只是加上”公車號”作為 query string:
所以我們可以實作「查詢」 Button 的方法如下:
private void Button_Query_Click_1(object sender, RoutedEventArgs e) { string strSelectedBus = comboBusLines.SelectedValue.ToString(); webviewQuery.Source = new Uri(Uri.EscapeUriString("http://pda.5284.com.tw/MQS/businfo2.jsp?routeId=" + strSelectedBus)); }
其中使用了 EscapeUriString() 是要避免在 Uri string 之中出現中文亂碼。
按 F5 測試之後應該就能看到 WebView 控制項會顯示如下畫面:
之後,要開始實作「我的最愛」功能了。這部份同時要使用到 Windows 8 的資料漫遊 (Raoming) 機制,讓使用者若以同一個 Microsoft ID 登入不同的裝置,都能看到相同的「我的最愛」公車列表。
為達到此目標,首先在MainPage.xaml.cs class中宣告一個 Windows.Storage.ApplicationDataContainer 物件:
public Windows.Storage.ApplicationDataContainer roamingSettings =
Windows.Storage.ApplicationData.Current.RoamingSettings;
然後實作「加入我的最愛」 Button 的程式碼如下,記得在我的最愛及 roaming 物件中都要新增:
private void addToFavorite_Click_1(object sender, RoutedEventArgs e) { string strBusToAdd = comboBusLines.SelectedItem.ToString(); if (strBusToAdd.Length > 0 && !myFavorite.Items.Contains(strBusToAdd)) { this.myFavorite.Items.Add(strBusToAdd); roamingSettings.Values["MyFavorites"] += strBusToAdd + ","; } }
同時,「刪除」Button的程式碼如下,記得要在我的最愛及 roaming 物件中皆要作刪除:
private void delete_bus(object sender, RoutedEventArgs e) { if (myFavorite.SelectedItem != null) { string strTmp = roamingSettings.Values["MyFavorites"].ToString(); roamingSettings.Values["MyFavorites"] = strTmp.Remove(strTmp.IndexOf(myFavorite.SelectedItem.ToString()), myFavorite.SelectedItem.ToString().Length); myFavorite.Items.Remove(myFavorite.SelectedItem); } }
最後,記得要在程式一開始的時候,即 OnNavigatedTo() 的方法中,檢查是否存在既有的「我的最愛」清單並匯入:
if (roamingSettings.Values["MyFavorites"] == null) { roamingSettings.Values["MyFavorites"] = ""; } strFavorites = roamingSettings.Values["MyFavorites"].ToString().Split(','); for (int i = 0; i < strFavorites.Length-1; i++) { this.myFavorite.Items.Add(strFavorites[i]); }
至此,我們已經完成文章一開頭所要完成的第1、2項功能了!
接下來要實作第3項的「搜尋」功能,首先在專案中新增一個「搜尋合約」的新項目:
然後打開 SearchResultsPage1.xaml 後拉入一個 WebView 控制項。
之後在 SearchResultsPage1.xaml.cs 的 Filter_SelectionChanged() 方法中實作:
void Filter_SelectionChanged(object sender, SelectionChangedEventArgs e) { string[] routeArray = { "0南","0東","1","108","108區(二子坪)","以下省略"}; if (routeArray.Contains(strQuery)) { searchWebView.Source = new Uri(Uri.EscapeUriString("http://pda.5284.com.tw/MQS/businfo2.jsp?routeId=" + strQuery)); VisualStateManager.GoToState(this, "ResultsFound", true); } else { VisualStateManager.GoToState(this, "NoResultsFound", true); } }
就簡單完成我們的第3項功能了! 最後為了讓畫面不致太單調,我加入一個台北的夜景作為背景:
首先將圖片檔直接拉到 Assets 的資料夾之中,就能在 Grid 中作好背景設定:
為了能讓此程式順利上架 Windows Store ,需要準備一些 logos ,如程式一開始的 Splash screen logo、出現在 Windows Store市集時的logo等,這部份我是用一個 Syncfusion 公司提供,目前免費的工具來製作http://www.syncfusion.com/downloads/metrostudio. 製作時記得在.appxmanifest之中查一下所需logos的大小喔!
同時,因為我的確使用了網際網路 (Internet) 的功能,所以必需宣告隱私權原則 (延伸閱讀: 最常見的退件原因- 隱私權聲明),我的作法如下:
第一步: 我在Windows Azure Web Site上直接建立了一個「網站」,並套用了WordPress Blog的範本。
第二步: 我草擬了一份簡單的隱私權聲明後,發佈在以上剛建立的Blog網站中 (http://mengtsai.azurewebsites.net/?p=51)。
第三步: 在App.xaml.cs中加入以下程式碼,讓使用者可以在Charms Bar的設定中找到「隱私權」的連結:
private void OnCommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args) { UICommandInvokedHandler handler = new UICommandInvokedHandler(onSettingsCommand); SettingsCommand privacy1Command = new SettingsCommand("privacystatementPage", "隱私權原則", handler); args.Request.ApplicationCommands.Add(privacy1Command); } async void onSettingsCommand(IUICommand command) { SettingsCommand settingsCommand = (SettingsCommand)command; if (settingsCommand.Id.ToString().Equals("privacystatementPage")) { var success = await Windows.System.Launcher.LaunchUriAsync( new Uri(@"http://mengtsai.azurewebsites.net/?p=51")); } }
並記得在同一檔案的 OnLanuched() 方法最後,加入以下這行,以登記 OnCommandsRequested() 這個 event:
// Register handler for CommandsRequested events from the settings pane SettingsPane.GetForCurrentView().CommandsRequested += OnCommandsRequested;
我親自撰寫的程式碼部份僅止於此,若不計開發工具自動產生的程式碼的話,是個總計不到50行statements的簡單App。這個第一版本的 App 跑起來的長相大致如下:
搜尋畫面的部份:
下一篇文章則會記錄上架的過程及需要注意的眉角!
程式碼下載 (Source code download)
隱私權聲明-最常見的退件原因
Windows 8上的Windows Store市集開張以來,目前為止最常看到App被退件的原因,大約就屬4.1.1這條認證需求了:
4.1.1 如果您的應用程式具備網路通訊功能,則必須包含隱私權聲明
如果您的應用程式具備可傳輸資料的技術能力,您就必須維持一份隱私權原則。您還必須在應用程式的「描述」頁面以及 Windows 設定快速鍵顯示的應用程式設定中,提供您的隱私權原則存取方法。
讓您的應用程式具備網路通訊功能的應用程式能力宣告包含:internetClient、internetClientServer 以及 privateNetworkClientServer。
您的隱私權原則必須告知使用者有關應用程式傳輸個人資訊以及使用、儲存、保護和揭露個人資訊的方式,並且說明使用者在使用和分享其資訊時可用的控制權以及存取資訊的方式,而且必須遵守適用的法律與規定。
簡單來說,只要您的App內有宣告使用網際網路(Internet)、網路攝影機 (WebCam)或個人文件庫(Documents Library),就必預提供隱私權聲明;而您若是以Visual Studio 2012的範本來開發的話,請注意使用網際網路的宣告預設是打開的喔!
而這也解釋了為何4.1.1這條會成為退件的首要原因了! 
所以,基本上您有兩種選擇:
1、您的App完全不會使用到Internet,那請記得到.appxmanifest中取消勾選!
2、若您的App的確會使用網際網路(Internet)、網路攝影機 (WebCam)或個人文件庫(Documents Library),那就請準備隱私權聲明吧,您將有以下三件事要完成。
首先,您的隱私權聲明必需有一個公開網址(Public Url);比如您的公司網站、個人網站甚至一篇Blog的文章,都可以放置您的隱私權聲明(沒有個人網站? 可考慮Windows Azure Web Site)。而在您上架至Windows Store的步驟之中就會看到填入此公開網址的欄位:
其次,隱私權聲明中到底要寫些什麼呢? 請參考”解決認證錯誤”之中的描述:
- 告知使用者您應用程式所收集的個人資訊
- 告知使用者該資訊的使用、儲存、保護及揭露方式
- 說明使用者對於該資訊的使用及共用有何控制權
- 說明使用者可以如何存取他們的資訊
- 遵守適用的法令與規定
當然各位也可以參考同類型App的隱私權聲明,如台灣蘋果日報隱私權聲明。
最後,就是要在App的Charms Bar”設定”(Settings)中,提供一個隱私權聲明的連結即可:
如果您不熟悉如何在Settings Charm中作設定,可參考以下文章的最後一段,提到我實作隱私權宣告的程式碼: http://blogs.msdn.com/b/mengtsai/archive/2013/01/02/50-windows-store-app.aspx
另外也可參考以下的正式範例:
– App settings sample: 基本上演示如何使用ApplicationSettings API;有C#, VB.NET, JavaScript & C++的版本可供下載。
– Windows Camp in a Box: 這個其實是微軟在全球作TTT(Train-The-Trainer)教育訓練時使用的教材,其中的Lab 6就是有關Settings charm方面的習作;有C#及JavaScript的版本可供下載。
信用卡驗證–Windows 市集註冊
在註冊Windows Store帳戶時,為了確認開發帳戶的安全性和完整性,不論是個人帳戶或是公司帳戶,都必須先經過驗證,您才能使用它們在 Windows 市集內列出應用程式。
其中一個驗證程序步驟就是確認您的身分識別。微軟使用一種稱為「PICV 查問」的方法。在這項查問中,我們會向您用來支付開發人員帳戶費用的信用卡收取小額費用 (通常介於 $0.02 美元到 $5 美元),之後再註銷此筆費用,而你需要知道這筆交易的細節來作驗證。http://msdn.microsoft.com/zh-tw/library/windows/apps/jj863494.aspx#verifying_accounts
重要: 由於目前大部份台灣的信用卡公司,並不會在每月寄出的紙本對帳單上列出此筆交易,所以請各位依以下步驟來完成驗證:
1. 在註冊之後的2天內打電話給您的信用卡客服 –> 並請轉接客服主管 –> 調出”所有”「交易明細」是”Microsoft”or”微軟”的交易紀錄,確認此交易金額。
以我個人的經驗作例子,若我未完成此項步驟,我會在App上架過程的儀表版中看到以下畫面,其中紅字的部份為: “在您驗證付款方式之前,我們無法在市集中列出您的應用程式。”
點選”檢查您的付款方式”之後:
你就會看到我的”帳戶自動預約日期”為2013/9/12,因為這個帳號是一年期,表示我是在2012/9/12左右的時間付款,所以打電話給信用卡客服專員的時候,就能要求對方調閱這個日期前後的以”台灣微軟”或”Microsoft”抬頭的交易記錄。
以下是幾種可能的交易明細:
註一: 請忽略註冊市集年費 (個人帳戶: NT$1,420,或公司帳戶: NT$2,840)
註二: 若錯誤十次會鎖帳號
2. 完成查詢金額後,請回到儀表板的設定檔,點選左下方選單- 訂閱,接著點選”立即驗證”。
3. 於下方畫面的”交易金額”,請填寫 “台幣”金額(務必加上.00)。
在註冊時若有任何疑問,可以由以下方式詢問:
1. 發信給 http://getsupport.microsoft.com
(最好有電子帳單或紙本帳單影本,包含微軟交易紀錄,加註記”I need Chinese support.”)
2. 客服部電話0800-008-833
Windows Store 上架常見問題 (稅金設定檔)
如果要將您的App上架到Windows Store,就必預填寫有效的稅金檔,否則在App的上架過程中會看到以下的畫面。
其中的紅字部份為: “在您有一個有效的的稅金檔之前,我們無法在市集中列出您的應用程式。”
或是會看到”您的稅金檔設定無效”的提示:
以下就列出為了符合美國國稅局的報稅規定,非美國居民需填寫國稅局表格 W-8BEN的步驟。
Part 1 填寫基本資料 (依公司或個人帳戶,請參考下圖)
若是公司帳戶,請勾選”Corporation”:
若是個人帳戶,請勾選”Individual”:
Part 2 請不要填寫任何資料
Part 3請簽名及選擇職稱
步驟其實不複雜,若還有任何疑問的話,可以用以下方式來連絡:
客服部電話0800-008-833
或發信給 http://getsupport.microsoft.com
開發Windows 8 遊戲App? 教您如何符合台灣遊戲軟體分級規定
經濟部工業局為兼顧產業發展和保護兒少的身心健康,於民國95年依兒童及少年福利法的授權制定「電腦軟體分級辦法」,讓電腦遊戲軟體納入分級規範,將國內遊戲產業導入正向發展。
而若要在 Windows 市集中發佈您的遊戲,就需要先對買家描述您的遊戲內容分級,微軟也有相對應的工具及文件教您如何取得分級憑證及封裝: http://msdn.microsoft.com/zh-tw/library/windows/apps/hh465153.aspx.
其中請使用 Visual Studio 2012 內附的 GDFMaker 工具,在”Add Rating Dialog”之中選擇CSRR,就可以在以下頁面中設定台灣的遊戲分級。
之後透過文章的步驟上傳您的遊戲之後,在Windows 市集中就會出現一個”內容評分”的說明。
以某 XBOX Live 遊戲為例:
當然,如果您的遊戲 App 要上架到別的國家,可以透過相同的 GDFMaker工具來製作其他國家的憑證:
請注意:
若您在執行GDFMaker時出現以下錯誤: (訊息是: “索引(以零為起始)必須大於或等於零,並且小於引數清單的大小。”)
第1. 請確認您是執行 Visual Studio 2012 內附的 GDFMaker,目錄在: %ProgramFiles(x86)%Windows Kits8.0binx86 之下。
第2. 目前 GDFMaker 的版本會因為NEU – {Language Neutral}在中文系統上沒有辦法顯示,其解法很簡單: 請在中文OS上裝英文語言包,或是用純英文的OS即可。



