2022年9月22日 星期四

【Xamarin】Firebase Cloud Messaging 推播API說明

此篇是講解如何使用API主動推播給APP的用戶

API總共有兩種呼叫方式

1.Server Key。
2.Service Account+ProjectID(SenderID)。

這兩種我們會推薦使用第二種方式去發送推播,因為未來可以針對服務帳號去切開各推播的連線方式。

先進入FCM的專案設定 =>雲端設定








點選管理服務帳戶,會看到服務帳號的內容。












選擇一個Admin的帳戶點入後,在點選密鑰頁籤內的[添加密鑰]=>[創建新密鑰]。







選擇JSON格式後,網頁會自動下載。

成功後就可以看到有一個密鑰產生。(下載檔案後面會用到)



程式部分用Winform當作範例,並安裝相關的Nuget套件。

只需安裝[FireBaseAdmin]即可。


Winform建立一個按鈕和三個文字框,並定義成下圖所示。


在表單初始化的地方加入FCM驗證那段(不用自行處理Oauth2,FirebaseAdmin會幫你實做這段)

  public Form1()
        {
            InitializeComponent();

            #region FCM驗證
            FirebaseApp.Create(new AppOptions()
            {
                Credential = GoogleCredential.FromFile("private_key.json")
            });
            #endregion
        }
p.s.目前範例使用檔案載入金鑰,也可使用JSON字串的方式帶入,如同下方範例
    #region FCM驗證
            FirebaseApp.Create(new AppOptions()
            {
                Credential = GoogleCredential.FromJson("JSON字串")
            }) ;
            #endregion

在按鈕的Click事件上寫下方程式(要注意定義的名稱)

private void btnSend_Click(object sender, EventArgs e)
        {
            string token = txtToken.Text;
            string notificationTitle = txtTitle.Text;
            string notificationBody = txtContent.Text;
            // See documentation on defining a message payload.
            var message = new FirebaseAdmin.Messaging.Message()
            {
                Data = new Dictionary<string, string>()
                {
                    { "myData", "1337" },
                },
                //Token = registrationToken,
                //Topic = "all",
                Notification = new Notification()
                {
                    Title = notificationTitle,
                    Body = notificationBody
                },

         //IOS 專用屬性

        Apns=new ApnsConfig(){

            Aps= new Aps

            { 

                //紅點數字通知,傳1代表固定顯示1。

                Badge=1

            }

        }

            };
            if (string.IsNullOrEmpty(token))
            {
                message.Topic = "all";
            }
            else
            {
                message.Token = token;
            }
            // Send a message to the device corresponding to the provided
            // registration token.
            string response = FirebaseMessaging.DefaultInstance.SendAsync(message).Result;
            // Response is a message ID string.
            Console.WriteLine("Successfully sent message: " + response);
        }

在專案根目錄下放入剛剛下載的密鑰(名稱改為private_key.json)。



開始偵錯專案,填入Token、主旨和內容,點選發送。



手機就可以看到推播訊息。












沒有留言:

張貼留言

【.Net Core】 EF Core + Web API 實作

 EF Core是Entity Framework在.Net Core使用的版本,功能幾乎相同,但具有輕巧、高擴充性以及高效能等優點,建議各位學習。 通常在.Net Core如果要用ORM的方式會有兩種選擇分別是EF Core以及Dapper。 從其他網路文章可以看到這兩種在最新...