XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2016/07/23

HocKeyApp 與 Xamarin.Forms for Android

HocKeyApp 與 Xamarin.Forms for Android

這份文章將會描述如何在 Xamarin.Forms 的 Android 平台下,使用 HocKeyApp 的相關功能。

第一版本專案 準備上架之用

首先,先產生一個新的 Android 應用程式,並且送到 HocKeyApp 上。

建立標籤式的樣板式頁面方案

  1. 首先,開啟您的 Visual Studio 2015
  2. 接著透過 Visual Studio 2015 功能表,選擇這些項目 檔案 > 新增 > 專案 準備新增一個專案。
  3. 接著,Visual Studio 2015 會顯示 新增專案 對話窗,請在這個對話窗上,進行選擇 Visual C# >Cross-Platform > Blank Xaml App (Xamarin.Forms Portable)
  4. 接著,在最下方的 名稱 文字輸入盒處,輸入 XFHocKey 這個名稱,最後使用滑鼠右擊右下方的 確定按鈕。
  5. 當專案建立到一半,若您的開發環境還沒有建置與設定完成 Mac 電腦與 Xamarin Studio for Mac 系統,此時會看到 Xamarin Mac Agent Instructions 對話窗出現,這個對話窗是要提醒您進行與 Mac 電腦連線設定,這是因為,您無法在 Windows 作業系統進行 iOS 相關應用程式的建立與設計工作,而是需要透過 Mac 電腦安裝的 XCode 來協助您完成這些 iOS 應用程式的建立工作。不過,這不影響您繼續開發 Xamarin.Forms 的應用程式,只不過此時,您無法編譯與執行 iOS 的應用程式。
  6. 接著會看到 新的通用Windows專案 對話視窗,此時,您只需要按下 確定 按鈕即可,此時,專案精靈會繼續完成相關平台的專案建立工作。
  7. 最後,整個新的 Xamarin.Forms 專案就建立完成了。

建立使用者登入頁面

  1. 使用滑鼠右擊核心PCL節點,選擇 加入 > 新增項目
  2. 在 加入新項目 - XFHocKey 對話窗內
    • 點選 Cross-Platform > Forms Xaml Page
    • 在下方名稱欄位內,輸入 LoginPage
    • 點選 新增 按鈕
  3. 開啟 LoginPage.xaml 檔案,將底下 XAML 宣告標記複製到這個檔案內

LoginPage.xaml

  • 在這個頁面 XAML 宣告內容,定義了兩個文字輸入盒 Entry 用來讓使用者輸入帳號與密碼
  • 宣告一個按鈕,用來讓使用者進行登入驗證之用
  • 宣告一個名稱為 label錯誤提示 的 Label 控制項,用來顯示登入驗證失敗的錯誤訊息。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XFHocKey.LoginPage">
  <ContentPage.Padding>30</ContentPage.Padding>
  <StackLayout
    Orientation="Vertical"
    VerticalOptions="Center"
    >

    <Label x:Name="label錯誤提示"
           TextColor="Red"
           FontSize="24"
           HorizontalOptions="Center"
           IsVisible="False"
           />

    <Label Text="帳號" />
    <Entry x:Name="entry帳號"
           Placeholder="請輸入登入帳號"
           />
    <Label Text="密碼" />
    <Entry x:Name="entry密碼"
           Placeholder="請輸入登入密碼"
           IsPassword="True"
           />

    <Button x:Name="button登入"
            Text="登入"
            Clicked="Onbutton登入Clicked"/>
  </StackLayout>
</ContentPage>
  1. 開啟 LoginPage.xaml.cs 檔案,將底下 C# 程式碼複製到這個檔案內
    • 在按鈕事件內,當使用者輸入的帳號與密碼不是空白,則是為驗證失敗,需要顯示訊息 帳號與密碼錯誤 到頁面上。
    • 若帳號與密碼驗證正確,則將頁面切換到 MainPage 頁面,並且清除導航堆疊內的其他項目;要清除導航堆疊內的項目,可以使用 Navigation.NavigationStack 取得所有導航堆疊內的項目,使用RemovePage 方法,就可以予以刪除,不過,要特別注意的是,導航堆疊使用的資料結構採用的是先進先出 的方式。

LoginPage.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xamarin.Forms;

namespace XFHocKey
{
    public partial class LoginPage : ContentPage
    {
        public LoginPage()
        {
            InitializeComponent();
        }

        public async void Onbutton登入Clicked(object sender, EventArgs e)
        {
            if((entry帳號.Text??"") == "" && (entry密碼.Text??"") == "")
            {
                #region 帳號與密碼正確,切換到應用程式首頁
                label錯誤提示.IsVisible = false;
                label錯誤提示.Text = "";

                var NextPage = new MainPage();
                await Navigation.PushAsync(NextPage);

                清除導航頁面堆疊項目();
                #endregion
            }
            else
            {
                #region 帳號與密碼不正確,顯示一個錯誤提示訊息
                label錯誤提示.IsVisible = true;
                label錯誤提示.Text = "帳號與密碼錯誤";
                #endregion
            }
        }

        /// <summary>
        /// 此時,將無法使用硬體回上一頁按鍵,回到這個頁面
        /// </summary>
        private void 清除導航頁面堆疊項目()
        {
            var 頁面堆疊 = Navigation.NavigationStack;

            while (頁面堆疊.Count > 1)
            {
                var page = 頁面堆疊.First();
                if (page != null)
                {
                    Navigation.RemovePage(page);
                }
                else
                {
                    break;
                }
            }
        }
    }
}

修正 MainPage 首頁頁面

  1. 開啟 MainPage.xaml 檔案,將底下 XAML 宣告標記複製到這個檔案內

MainPage.xaml

這個頁面很簡單,僅顯示一串文字,說明這個頁面是主頁面。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:XFHocKey"
             x:Class="XFHocKey.MainPage">

  <ContentPage.Padding>30</ContentPage.Padding>

  <StackLayout
    Orientation="Vertical"
    VerticalOptions="Center"
    >
    <Label 
      HorizontalOptions="Center"
      Text="主頁面" FontSize="36" />
  </StackLayout>

</ContentPage>

修正 App.xaml.cs

  1. 開啟 App.xaml.cs 檔案,將底下 C# 程式碼複製到這個檔案內
    這裡只有修正一行程式碼,那就是要將整個 Xamarin.Forms 的進入點,從原先的 ContentPage 改成 NavigationPage,這樣,在這個應用程式顯示過程中,就可以使用導航頁面的功能來切換到不同頁面了。

App.xaml.cs

將 App 類別的建構式內容,以底下程式碼取代。
            InitializeComponent();

            //MainPage = new XFHocKey.MainPage();

            // 這裡使用 NavigationPage ,這是因為當登入帳密正確之後,需要切到 MainPage 頁面
            MainPage = new NavigationPage(new LoginPage());

修正 XFHocKey.Droid 專案定義

這裡是要修正原生 Android 的專案內容。

MainActivity.cs

開啟 XFHocKey.Droid 專案內的 MainActivity.cs 檔案,將底下 C# 程式碼複製到這個檔案內
這裡僅僅定義這個主要 Activity 的名稱為 多奇集團 行動儀表板 (Label = "多奇集團 行動儀表板"),也就是應用程式圖示的名稱。
using System;

using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Xamarin.Forms;

namespace XFHocKey.Droid
{
    [Activity(Label = "多奇集團 行動儀表板", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);

            global::Xamarin.Forms.Forms.Init(this, bundle);
            LoadApplication(new App());
        }
    }
}

設定 XFHocKey.Droid 屬性

修正專案屬性,可以用於讓使用者知道所安裝的應用程式的版本資訊與應用程式所代表的圖示圖片。
每次應用程式有異動且準備要進行提交到 HocKeyApp 後台的時候,一定要切記,要來修改這些資訊,免得會影響自動升級提醒與使用者不知道安裝與測試哪個版本的問題。
  1. 滑鼠雙擊 XFHocKey.Droid 專案內的 Properties 節點
  2. 點選左方的 Android Manifest 標籤頁次
  3. 在 Applicatoin name 欄位內輸入 多奇集團 行動儀表板
  4. 在 Package name 欄位內輸入 com.miniasp.dashboard
  5. 在 Applicatoin Icon 下拉選單內選擇 @drawable/icon
  6. 在 Version number 內輸入 1
  7. 在 Version name 內輸入 1.0
    XFHocKey.DroidManifest

建置專案

  1. 在上方工具列的專案組態下拉選單,選擇 Release 組態,作為專案要建置的組態
    切換到 Release 組態,這是因為需要透過建置完成之後,可以順利產生所需要的 .apk檔案
    切換組態為Release
  2. 滑鼠右擊 XFHocKey.Droid 專案節點,選擇 重建
  3. 當專案重建完成之後,滑鼠右擊 XFHocKey.Droid 專案節點,選擇 Export Android Package (.apk)
    ExportAndroidPackage
  4. 滑鼠右擊 XFHocKey.Droid 專案節點,選擇 在檔案總管中開啟資料夾,接著,在檔案總管中切換到bin/Release 目錄下,您會看到 com.miniasp.dashboard-Signed.apk 這個 .apk 檔案
    請將該檔案總管留下,因為,等下或者之後,需要拖拉這個 com.miniasp.dashboard-Signed.apk檔案到 HocKeyApp 儀表板內。
    apk檔案

HocKeyApp

建立 HocKeyApp 帳號與ID

  1. 進入到 HocKeyApp 的儀表板網頁 https://rink.hockeyapp.net/manage/dashboard
  2. 您可以使用社群帳號登入到 HocKeyApp 內或者直接使用 HocKeyApp 的帳號與密碼來進行驗證。
    SignintoHockeyApp
    若您使用社群帳號登入,但是,尚未註冊過 HocKeyApp 的帳號與密碼,此時,會出現 Complete Your Profile 的頁面,請您填寫關於 HocKeyApp 帳號相關資訊,並點下 Register 已完成註冊程序。
    請記得要勾選 I'm a developer 這個檢查盒
    HocKeyAppCompleteYourProfile

上傳應用程式套件

  1. 您可以使用拖拉的方式來建立一個測試項目
    從上面步驟的檔案總管,找您 com.miniasp.dashboard-Signed.apk 檔案,拖拉到儀表板上
    HocKeyAppDashboard
    此時,檔案就會開始上傳到 HocKeyApp 儀表板內
    正在上傳apk
  2. 當上傳完成後,您需要點選 Release 按鈕,準備進行釋出這個版本
    在底下,有看到一個欄位 App ID,請將這個值先複製下來,等下會用到。
    準備Release
    • 請在要釋出應用程式的第一個步驟頁面 Notes 中間,可以輸入關於此次應用程式釋出的說明文字,之後,點選,Next Step 按鈕
      ReleaseNotes
    • 在第二步驟的 Status 頁面,可以直接點選 Next Step 按鈕
      ReleaseStatus
    • 在第三步驟的 Notify 頁面,可以直接點選 Send按鈕
      ReleaseNotify
    • 最後,會顯示此次釋出版本的相關資訊,請點選 Done 按鈕
      ReleaseFinal
    • 恭喜您,您已經將您的應用程式在 HocKeyApp 儀表板上架成功了,請點選左上角的回上一頁的箭頭
      ReleaseResult
  3. 由於這個版本尚未具備 HocKeyApp 任何能力,因此,我們需要馬上製作出第二個具有 HocKeyApp 處理能力的 Android 安裝套件

第二版本專案 修正具有 HocKeyApp 提供的功能

第一個版本的應用程式已將在 HocKeyApp 後台上架了,不過,此時,剛剛上架的應用程式尚未具備 HocKeyApp 任何能力,例如:應用程式崩壞回報、使用者使用紀錄、使用者回報、應用程式需要升級提醒與協助升級等功能。
這是因為在進行第一次提交 App 到 HocKeyApp 後台之前,您尚未取得 HocKeyApp App_ID 值,一直要到您的應用程式出現在 HocKeyApp 後台,才能夠取得 App_ID;所以,在此,將會說明如何透過 App_ID 與加入一些程式碼,就可以讓您的應用程式,具有 HocKeyApp 提供的功能。

MainPage.xaml

  1. 在核心PCL專案內,開啟 MainPage.xaml 檔案,將底下 XAML 宣告標記複製到這個檔案內
    • 這裡,僅加入一個按鈕到首頁頁面內,這是希望刻意設計出,當使用者按下了這個按鈕,應用程式會自動閃退,並且確認 HocKeyApp 會有捕捉到這些例外異常資訊,並且會在後端儲存起來。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:XFHocKey"
             x:Class="XFHocKey.MainPage">

  <ContentPage.Padding>30</ContentPage.Padding>

  <StackLayout
    Orientation="Vertical"
    VerticalOptions="Center"
    >
    <Label 
      HorizontalOptions="Center"
      Text="主頁面" FontSize="36" />

    <Button x:Name="button我崩潰了"
            Text="按下我,就會崩潰了"
            Clicked="Onbutton我崩潰了Clicked"
            />
  </StackLayout>

</ContentPage>
  1. 在核心PCL專案內,開啟 MainPage.xaml.cs 檔案,將底下 C# 程式碼複製到這個檔案內
    • 這裡的按鈕處理事件,將會丟出一個例外異常,此時,會透過 HocKeyApp 機制,將這個例外異常記錄下來。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace XFHocKey
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        public void Onbutton我崩潰了Clicked(object sender, EventArgs e)
        {
            // 自己發出一個例外異常,HocKeyApp 將會捕捉到這個例外異常的相關資訊
            throw new Exception("使用者自己選擇要崩潰了");
        }
    }
}

MainActivity.cs

  1. 滑鼠右擊 XFHocKey.Droid 專案內的參考節點,把 HockeySDK.Xamarin 這個 NuGet 套件,安裝到這個專案內;請記得要勾選 包含搶鮮版。您不需要在核心PCL專案內安裝這個套件,僅僅需要在原生應用程式專案內安裝這個套件即可;不過,當您需要在核心PCL專案內想要呼叫 HocKeyApp 系統功能(存在於原生專案內)的話,在這裡,使用訊息中心來做到這樣效果。
    安裝HockeySDK.Xamarin
  2. 在 XFHocKey.Droid 專案內,開啟 MainActivity.cs 檔案,將底下 C# 程式碼複製到這個檔案內
  3. 其中,變數 HocKeyApp_ID 的設定值,就是前面取得的 HocKeyApp 的 App_ID 的值,請將您實際的 HockeyApp App_ID,複製到這個變數預設值。
using System;

using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using HockeyApp.Android;
using Xamarin.Forms;

namespace XFHocKey.Droid
{
    [Activity(Label = "多奇集團 行動儀表板", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        public string HocKeyApp_ID = "ee4d14e6b55d41569395c176e9720ebb";
        protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);

            global::Xamarin.Forms.Forms.Init(this, bundle);
            LoadApplication(new App());

            // 註冊程式異常崩壞的回報機制
            CrashManager.Register(this, HocKeyApp_ID);

            // 檢查是否有新版本推出,讓使用者可以選擇是否要升級
            CheckForUpdates();

        }

        void CheckForUpdates()
        {
            // Remove this for store builds!
            UpdateManager.Register(this, HocKeyApp_ID);
        }

        void UnregisterManagers()
        {
            UpdateManager.Unregister();
        }

        protected override void OnPause()
        {
            base.OnPause();

            UnregisterManagers();
        }

        protected override void OnDestroy()
        {
            base.OnDestroy();

            UnregisterManagers();
        }
    }
}

設定 XFHocKey.Droid 屬性

  1. 滑鼠雙擊 XFHocKey.Droid 專案內的 Properties 節點
  2. 點選左方的 Android Manifest 標籤頁次
  3. 在 Version number 內輸入 2
  4. 在 Version name 內輸入 1.1

建置專案

  1. 在上方工具列的專案組態下拉選單,選擇 Release 組態,作為專案要建置的組態
    切換組態為Release
  2. 滑鼠右擊 XFHocKey.Droid 專案節點,選擇 重建
  3. 當專案重建完成之後,滑鼠右擊 XFHocKey.Droid 專案節點,選擇 Export Android Package (.apk)
    ExportAndroidPackage
  4. 回到剛剛已經打開的檔案總管,您看到新的 com.miniasp.dashboard-Signed.apk 檔案又產生出來了。

上傳第二版本應用程式套件

  1. 點選 HocKeyApp 網頁右上方的底下圖示,這樣就可以回到 HocKeyApp 儀表板首頁
    回到HocKeyApp儀表板
  2. 請將新產生的 com.miniasp.dashboard-Signed.apk 檔案從檔案總管上,拖拉到 HocKeyApp 儀表板網頁上,接著放開,使其上傳更新版本應用程式到 HocKeyApp 內。
    正在上傳apk
  3. 當上傳完成後,會直接進入到釋出應用程式的第一個步驟頁面 Notes
    請在 Notes 欄位中,輸入 這是具有綁定 HocKeyApp 機制的應用程式更新
    Release2Notes
    • 請依序點選 Next Step 按鈕 > Next Step 按鈕 > Send 按鈕
    • 最後,會顯示此次釋出版本的相關資訊,請點選 Done 按鈕
    • 恭喜您,您已經將您的第二版本應用程式在 HocKeyApp 儀表板上架成功了,請點選左上角的回上一頁的箭頭
      Release2Final
    • 此時,您可以在網頁最上方看到,Versions(2)Crashes(0)Feedback(0)Users(2),分別表示,這個應用程式 (App),現在有:
      • Versions(2) 有兩個版本上傳
      • Crashes(0) 使用者使用上,沒有崩壞紀錄
      • Feedback(0) 沒有任何使用者有提出建議
      • Users(2) 現在有兩個使用者可以進行餐與測試
      HocKeyApp的狀態

指派測試人員

  1. 現在需要邀請使用者來進行測試
    • 請在應用程式明細頁面(如下圖),點選 Invite User 按鈕,邀請使用者來餐與測試
      AppDetail
  2. 請在 Invite User頁面下進行底下操作
    • 在 Email 欄位,填入測試者的電子郵件信箱
    • Role 欄位維持 Tester
    • 可以在 `Message (optional) 欄位,填入給測試者要知道的內容,例如:這是 多奇集團 行動儀表板 for Android 版本,請您協助幫忙測試。
    邀請使用者
    • 最後點選 Save 按鈕

應用程式測試者的操作環境

  1. 打開測試使用者信箱,裡面會有 HocKeyApp 寄來的一封通知郵件,如下圖所示
    準備安裝HocKeyApp用戶端
  2. 點選 Download & Install 連結
  3. 此時,選擇使用 Chrome 瀏覽器打開這個網址,點選 HocKeyApp for Testers 這個項目,準備進行安裝 HocKeyApp 用戶端
    HocKeyApp網頁用來安裝Client
  4. 點選 Download 按鈕,下載 HocKeyApp 的安裝用 APK 檔案;當下載完後,請安裝這個 APK 檔案
    HocKeyApp網頁用來安裝ClientReady.png
    HocKeyApp網頁用來安裝ClientAPK
  5. 當 HocKeyApp 用戶端程式執行後,請點選 SIGN IN 進行登入到 HocKeyApp
    HocKeyApp用戶端啟動
  6. 當登入完成之後,請點選左上角的漢堡按鈕,當導航面板出現之後,請點選 Invites 這個選項,您就會看到被邀請測試的App了。
    HocKeyApp用戶端登入後的狀態
  7. 在看到 多奇集團 行動儀表板 App,點選這個項目,把它安裝起來。
    HocKeyApp用戶端有App.png
    HocKeyApp用戶端有App準備安裝
  8. 安裝完成後,多奇集團 行動儀表板 App 就會直接執行了
  9. 當 多奇集團 行動儀表板 App 執行後,在帳號或密碼內,不會輸入甚麼內容,而點選了 登入 按鈕,則會出現錯誤訊息
    帳號與密碼錯誤
  10. 若帳號與密碼沒有輸入任何值,而點選了 登入 按鈕,則會進入首頁。
    • 在首頁下,若點選了 按下我,就會崩潰了 按鈕,這個應用程式就會閃退
      首頁
    • 請回到程式集內,找到 多奇集團 行動儀表板 App 重新執行,當出現下圖畫面,請點選 Send Report 按鈕,讓這個例外異常資訊送到 HocKeyApp 系統內。
      發現到有異常例外產生
    • 最後,請反覆在操作兩次例外異常,讓後端的 HocKeyApp 伺服器可以收到三個例外異常報告。
  11. 回到應用程式首頁,您就會看到如下圖,HocKeyApp將會告訴您,他收到了三個例外異常紀錄
    Crashes紀錄
    點選上圖的例外異常紀錄,將可以看到當時發生異常的呼叫堆疊
    callstacker

第三版本專案 修正使用者可以回報意見功能

MainPage.xaml

  1. 在核心PCL專案內,開啟 MainPage.xaml 檔案,將底下 XAML 宣告標記複製到這個檔案內
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:XFHocKey"
             x:Class="XFHocKey.MainPage">

  <ContentPage.Padding>30</ContentPage.Padding>

  <StackLayout
    Orientation="Vertical"
    VerticalOptions="Center"
    >
    <Label 
      HorizontalOptions="Center"
      Text="主頁面" FontSize="36" />

    <Button x:Name="button我崩潰了"
            Text="按下我,就會崩潰了"
            Clicked="Onbutton我崩潰了Clicked"
            />
    <Button x:Name="button我有話要說"
           Text="我有話要說"
           Clicked="Onbutton我有話要說Clicked"
            />
  </StackLayout>

</ContentPage>
  1. 在核心PCL專案內,開啟 MainPage.xaml.cs 檔案,將底下 C# 程式碼複製到這個檔案內
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace XFHocKey
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        public void Onbutton我崩潰了Clicked(object sender, EventArgs e)
        {
            // 自己發出一個例外異常,HocKeyApp 將會捕捉到這個例外異常的相關資訊
            throw new Exception("使用者自己選擇要崩潰了");
        }

        public void Onbutton我有話要說Clicked(object sender, EventArgs e)
        {
            // 透過訊息中心發出一個請求,可以使用 HocKeyApp 的 FeedbackManager 回報頁面
            MessagingCenter.Send<我要回報>(new 我要回報(), "是的,請說");
        }
    }
}

我要回報

  1. 使用滑鼠右擊PCL專案節點,選擇 加入 > 類別,並在底下名稱欄位輸入 我要回報
  2. 使用底下程式碼替換掉剛剛產生的檔案內容

我要回報.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XFHocKey
{
    public class 我要回報
    {
    }
}

MainActivity

  1. 打開 XFHocKey.Droid 專案內的 MainActivity.cs,使用底下程式碼替換

MainActivity.cs

using System;

using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using HockeyApp.Android;
using Xamarin.Forms;

namespace XFHocKey.Droid
{
    [Activity(Label = "多奇集團 行動儀表板", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        public string HocKeyApp_ID = "ee4d14e6b55d41569395c176e9720ebb";
        protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);

            global::Xamarin.Forms.Forms.Init(this, bundle);
            LoadApplication(new App());

            // 註冊程式異常崩壞的回報機制
            CrashManager.Register(this, HocKeyApp_ID);

            // 檢查是否有新版本推出,讓使用者可以選擇是否要升級
            CheckForUpdates();

            // 訊息中心訂閱者,當使用者在核心PCL內按下按鈕之後,訊息中心將會收到這個訊息通知,並且進行處理
            MessagingCenter.Subscribe<我要回報>(this, "是的,請說", (sender) =>
            {
                #region 讓使用者填寫意見,並記錄到 HocKeyApp
                FeedbackManager.Register(this, HocKeyApp_ID);
                FeedbackManager.ShowFeedbackActivity(ApplicationContext);
                #endregion
            });
        }

        void CheckForUpdates()
        {
            // Remove this for store builds!
            UpdateManager.Register(this, HocKeyApp_ID);
        }

        void UnregisterManagers()
        {
            UpdateManager.Unregister();
        }

        protected override void OnPause()
        {
            base.OnPause();

            UnregisterManagers();
        }

        protected override void OnDestroy()
        {
            base.OnDestroy();

            UnregisterManagers();
        }
    }
}

設定 XFHocKey.Droid 屬性

  1. 滑鼠雙擊 XFHocKey.Droid 專案內的 Properties 節點
  2. 點選左方的 Android Manifest 標籤頁次
  3. 在 Version number 內輸入 3
  4. 在 Version name 內輸入 1.2

建置專案

  1. 在上方工具列的專案組態下拉選單,選擇 Release 組態,作為專案要建置的組態
    切換組態為Release
  2. 滑鼠右擊 XFHocKey.Droid 專案節點,選擇 重建
  3. 當專案重建完成之後,滑鼠右擊 XFHocKey.Droid 專案節點,選擇 Export Android Package (.apk)
    ExportAndroidPackage
  4. 回到剛剛已經打開的檔案總管,您看到新的 com.miniasp.dashboard-Signed.apk 檔案又產生出來了。

上傳第三版本應用程式套件

  1. 點選 HocKeyApp 網頁右上方的底下圖示,這樣就可以回到 HocKeyApp 儀表板首頁
    回到HocKeyApp儀表板
  2. 請將新產生的 com.miniasp.dashboard-Signed.apk 檔案從檔案總管上,拖拉到 HocKeyApp 儀表板網頁上,接著放開,使其上傳更新版本應用程式到 HocKeyApp 內。
    正在上傳apk
  3. 當上傳完成後,會直接進入到釋出應用程式的第一個步驟頁面 Notes
    請在 Notes 欄位中,輸入 使用者可以回報問題與提出建議功能
    Release3Notes
    • 請依序點選 Next Step 按鈕 > Next Step 按鈕 > Send 按鈕
    • 最後,會顯示此次釋出版本的相關資訊,請點選 Done 按鈕
    • 恭喜您,您已經將您的第三版本應用程式在 HocKeyApp 儀表板上架成功了,請點選左上角的回上一頁的箭頭
      Release3Final
    • 此時,您可以在網頁最上方看到,Versions(3)Crashes(3)Feedback(0)Users(2),分別表示,這個應用程式 (App),現在有:
      • Versions(3) 有3個版本上傳
      • Crashes(3) 使用者使用上,有3個崩壞紀錄
      • Feedback(0) 沒有任何使用者有提出建議
      • Users(2) 現在有兩個使用者可以進行餐與測試

應用程式測試者的操作環境

  1. 強制關閉 多奇集團 行動儀表板 App
  2. 啟動 多奇集團 行動儀表板 App。
  3. 當 多奇集團 行動儀表板 App 執行後,系統會發現到有一個新版本推出,詢問您是否要進行更新
    • 點選 Show 按鈕
      UpdateAvailable
    • 此時,您會看到這個新版本的說明內容,並點下 Update 按鈕,升級這個 多奇集團 行動儀表板App
      AppUpdateInfo
      Loading
  4. 當應用程式升級完成,並且重新啟動,接著進入到主頁面,您會看到有個按鈕,我有話說
    我有話說
    請點選 我有話說 這個按鈕,會看到如下圖畫面,此時,填寫相關資料,最後按下 SEND FEEDBACK 按鈕,這項意見就會送到 HocKeyApp 系統內。
    Feedback
    回到 HocKeyApp 後台,可以看到有一個 Feedback 產生,您可以在這裡回覆給提問題的使用者
    有一個意見產生
    回覆意見
    當使用者再度點選 我有話說 按鈕,就會看到來自後端的回應
    使用者App看到回應

沒有留言:

張貼留言