發表文章

目前顯示的是 2020的文章

[FCM][07] .NET FireBase Admin 套件

圖片
1.安裝FirebaseAdmin套件 2.於FireBase平台「服務帳戶」中下載一組Java使用的金鑰,加入.NET專案中 3.使用下載的金鑰向Google取得憑證 4.使用FirebaseAdmin發送訊息

[FCM][06]Firebase Cloud Message API

本篇主要介紹FCM相關的API 主要分為兩個部份 1.推播訊息設定 2.訂閱 Topics  [推播訊息設定] 1.發送推播訊息(POST) API Url:https://fcm.googleapis.com/fcm/send Headers: Content-Type:application/json Authorization:key= API_KEY Content-Length:0 Body Example1:Device Token 單一裝置 {      "to" :  "fWsYHkSbDzg:APA91bH4eT1EyfxQngFeCmp8HYD7qNt0ZfPoA15uvoUpHORZO5Xq8ZbWSRd4B_QDm16KuUt4NI5OPTD4A7u1fsaU0AceYvPImwWSkdO-Kke8hKKcHFAYIUKX97s3Bsp45Q1BzZ2XLwho" ,      "notification" : {          "title" :  "推播測試" ,          "body" :  "內文123\n http:www.google.com " ,     } } Example2:Topics 主題 {      "to" :  "/topics/FCMTEST" ,      "notification" : {          "title" :  "推播測試" ,          "body" :  "內文123\n http:www.google.com " , ...

[FCM][05]Xamarin FCM 前景推播處理

圖片
1.在MainActive.cs OnCreate中加入以下這段程式 2.在MainActive.cs中加入以下方法 3.在類別FirebaseMessagingService中加入以下兩個方法 第一段為接收到前景推播時將訊息轉為系統通知 第二段為系統通知的處理

[FCM][04]取得FCM註冊的Device Token、向FCM訂閱Topic

圖片
建立一個類別 FirebaseMessagingServiceTest 繼承 FirebaseMessagingService 複寫OnNewToken方法,此段方法可以接收到向FCM註冊的Device Token 此時可以加入一段向FCM訂閱Topic的動作 FCM推播的兩種接收設定 1.Device Token (裝置):做為裝置識碼,FCM可針對單一/多個Device Token進行推播 2.Topic (主題):為訂閱的主題,在群體或大量推播是較為常用的。 在此範例中同時訂閱了FCMTEST、FCMTEST_Android 方便區隔「所有使用者」「Android使用者」 可針對不同Topic 的群體做推播

[FCM][03]Xamarin.Form Android 接收推播訊息

圖片
本篇是說明如何讓Xamarin.Android 接收 FCM推播訊息 完成以下設定即可接收背景推播訊息,前景推播需另外處理。 1.於Nuget 安裝套件 Xamarin.Firebase.Message Xamarin.GooglePlayServices.Base 2.將 Google Services JSON 檔案加入專案中 3.設定Google Services JSON 建置動作為GoogleServicesJson 4.設定專案屬性中套件名稱 ( 與FCM平台設定的套件名稱相同 ) 5.開啟 AndroidManifest.xml (專案配置文件)檔案,並將下列 <receiver> 元素插入 <application> 元素中 此設定主要是跟FCM註冊DeviceToken < receiver android : name = " com.google.firebase.iid.FirebaseInstanceIdInternalReceiver " android : exported = " false " /> < receiver android : name = " com.google.firebase.iid.FirebaseInstanceIdReceiver " android : exported = " true " android : permission = " com.google.android.c2dm.permission.SEND " > < intent-filter > < action android : name = " com.google.android.c2dm.intent.RECEIVE " /> < action android : name = " com.google.android.c2dm.intent.REGISTRATION " /> < category android : name = " ...

[FCM][02]Android Studio 接收FCM通知

圖片
本篇先說明使用Android Studio建立專案,測試接收CFM推播訊息 1.先於Firebase建立帳號後並建立新專案,專案名稱可隨意輸入 2.選擇GoogleAnalytics是否開啟,按「下一步」 3.專案建立後,選擇新增Android應用程式 4.Android套件名稱與APP專案的PackageName要相同 範例輸入com.example.myfcm 5.依畫面要求下載google-service.json檔案,等一下APP專案會用到 6.先開啟Android Studio建立一個新的專案(簡單基本的專案即可) 7.專案名稱可隨便輸入,重點是PackageName要與FCM的某項設定相同(需僅慎輸入) 在這裡我們輸入com.example.mycfm 8.左上角切到Project 並將下載的google-services.json放到app目錄下 10.修改App目錄下的build.gradle 上方增加一行  apply plugin : 'com.google.gms.google-services' dependencies區段中加入  implementation 'com.google.firebase:firebase-messaging:17.3.4' 11.修改根目錄build.gradle檔案 dependencies區段中加入 classpath 'com.google.gms:google-services:4.2.0' 到這裡App導入CFM的設定都完成了,直接運行APP準備測試 12.使用Firebase介面中發送Firebase Cloud Message訊息 13.發送訊息時指定剛才建立的應用程式com.example.mycfm,就可進行發送 14.查看模擬器中已接收到FCM推播的訊息

[FCM][01]Firebase Cloud Messaging介紹

圖片
Firebase Cloud Messaging 訊息推播服務 透過 Firebase 後台或 APP Server 推送訊息 藉由 Firebase Colud Messageing 的服務推送到各種平台上 (IOS、Android、Web) 兩種推播模式 1.前景推播:當使用者打開app時所傳送的推播 2.背景推播:當app處理背景執行、未開啟時所傳送的推播 提供兩種功能 1.預期性推播:透過GUI介面直接設定「固定週期」或是「指定特定日期時間」的推播 2.即時性推播: 2-1 記錄使用者的device token,根據device token推播訊息 2-2 根據有訂閱指定topic的使用者推播訊息

[.Net Core][Windows Service][03]使用Console Application (主控台應用程式) 搭配Topshelf

圖片
除Worker以外還有另一種Windows Service 的開發方式 透過Console Application(主控台應用程式)搭配Topshelf套件即可建置Windows Service 使用傳統開發 Windows Service 方式時,必定會面臨到如何在開發時期進行偵錯的問題 當然利用一些小技巧是可以達成 (ex. 參考 如何對 Windows Service 進行除錯 文章) 但到底還是要手動切換。 透過 Topshelf 這個套件可以讓開發者直接使用 Console 方式進行開發 編譯出來就是一隻 console 程式且可以獨自運行 又可以透過命令列指令將這個 console 執行檔安裝成為 Windows Service 服務 達到易於開發、偵錯及靈活使用的優點。 (若要佈署在Linux環境另有Topshelf.linux套件可使用) 1.建立Console Application(主控台應用程式) 專案 2.透過NuGet安裝Topshelf 套件 3.建立一個新類別 MainService,內容只有簡單印出目前系統時間(每秒執行一次) 4.於Program.cs中使用HostFactory掛載 MainService執行主要工作 5.可直接偵錯/運行,執行畫面如下 6.發佈後進行Windows Service安裝 於命令提示字元輸入 「執行檔名稱 install」,後面還可帶一些參數 例: ConsoleApp1.exe help  (可查詢相關參數使用方式) ConsoleApp1.exe install (安裝Windows Service) ConsoleApp1.exe uninstall (移除 Windows Service)

[.Net Core][Windows Service][02]Worker Service搭配Coravel 設定排程

圖片
Worker Service基本的範例功能太過陽春,可搭配Coravel 套件強化工作排程的設定 Coravel提供非常豐富的排程時間設定,以下介紹基本的使用方式 1.安裝 Coravel 套件 2.Program.cs加入引用 Coravel 3.加入排程項目Worker2、Worker4 4.設定排程執行時間 基本排程時間設定說明: Method Description EverySecond() 每秒執行 EveryFiveSeconds() 每5秒執行 EveryTenSeconds() 每10秒執行 EveryFifteenSeconds() 每1 5 秒執行 EveryThirtySeconds() 每30秒執行 EverySeconds(3) 每 n 秒執行 EveryMinute() 每1分鐘執行 EveryFiveMinutes() 每5分鐘執行 EveryTenMinutes() 每10分鐘執行 EveryFifteenMinutes() 每15分鐘執行 EveryThirtyMinutes() 每3 0 分鐘執行 Hourly() 每小時執行 HourlyAt(12) 每小時12分執行 Daily() 每1天執行 DailyAtHour(13) 每一天下午1:00執行 DailyAt(13, 30) 每一天下午1:30執行 Weekly() 每週執行 多條件式時間設定: 1.每週一、三、五半夜1點執行 scheduler.Schedule<TodoJob>()     .DailyAtHour(1)     .Monday()     .Wednesday()     .Friday(); 2.週未每5分鐘執行 scheduler.Schedule<ReportJob>() ...

[.Net Core][Windows Service][01]Worker Service (背景工作服務) 基本建立與安裝

圖片
一般來說 Worker Service 會被用來執行需要長時間處理或定期需要做的事情 .NET Core 3.0 提供了 Worker Service,用來建立系統服務的基本專案。 目前資源太少,網路上大都只提供最簡單的範例,還沒有找到可以靈活操作各個排程的方法。 在.Net Core的環境下不論是Worker Service或Console Application都是基本的應用程式,一樣都是透過套件就能轉換為Windows服務。 以下先介紹Worker Service基本的範例及Windows Service建置 [建立Worker Service專案] 建立好的專案一開始就附有基本的範例 (每秒執行並印出時間) [轉換為 Windows Service] 1..加入 Microsoft.Extensions.Hosting.WindowsServices 套件 2.於Program.cs 的CreateHostBuilder加入 UseWindowsService 2.完成的Worker Service需手動安裝至Windows 服務 於命令提示字元輸入指令 安裝:sc create WindowsServiceName binPath=執行檔位置 啟動:sc start WindowsServiceName 停止:sc stop WindowsServiceName 移除:sc delete WindowsServiceName [轉換為 Linux Daemon Service] 1. 於專案新增 Microsoft.Extensions.Hosting.Systemd 套件 2.在 Program 類別 CreateHostBuilder 處加上 UseSystemd()

[Dapper][01]基本應用

Dapper套件可直接由NuGet取得 安裝後於程式碼中加入 using Dapper; 即可使用。 1.執行SQL指令 (Execute) //SQL指令 StringBuilder sbSql = new StringBuilder(); sbSql.AppendLine(" UPDATE VipInfo SET IsStop=0 WHERE VipNo = @VipNo "); //變數宣告 var dynamicParams = new DynamicParameters(); dynamicParams.Add("VipNo", Source.VipNo); //執行SQL var Results = conn.Execute(sbSql.ToString(), dynamicParams); 2.資料查詢 (單一資料表) //SQL指令 StringBuilder sbSql = new StringBuilder(); sbSql.AppendLine(" SELECT VipNo, ShopNo, VipNa FROM VipInfo WHERE VipNo = @VipNo "); //變數宣告 var dynamicParams = new DynamicParameters(); //添加變數 dynamicParams.Add("VipNo", Source.VipNo); //執行SQL var Results = conn.Query< dynamic >(sbSql.ToString(), dynamicParams); 3.資料查詢 (多資料表) //SQL指令 StringBuilder sbSql = new StringBuilder(); sbSql.AppendLine(" SELECT VipNo, ShopNo, VipNa FROM VipInfo WHERE VipNo = @VipNo "); sbSql.AppendLine(" SELECT VipNo, VpTyNo FROM VipInfoType WHERE VipNo = @VipNo "); //變數宣告 var dyna...

[.NET Core] [Swagger] [04] DocumentFilter

圖片
專案的API可能包含所有客戶的API接口 如果我們不想在API文件中提供所有API接口內容 可以 增加過濾器移除不想被看到的API接口 被隱藏的API接口在Swagger文件中看不到,但還是可以被使用的。 在Startup.cs 啟動中修改,增加文件過濾器 以下新增名稱為 AllowAPIDocumentFilter 來過濾未在允用清單中的API接口 自己建一個APISetting.json 允用清單(字串陣列)