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、主旨和內容,點選發送。



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












沒有留言:

張貼留言

[ASP.Net]GridView自訂分頁處理

  ASP.Net的GirdView在每次分頁處理時都會在重新抓取所有資料在進行分頁,遇到大量資料或是設計不良的情況下,在切換時頁面會卡住,造成使用者體驗不佳。 可以透過GirdView內建的參數以及SQL OFFSET語法來替代原先的分頁處理,以下為步驟說明 1.asp...