跳到主要內容

精選

《十分鐘學程式》Firebase Push Notification - iOS Swift

現在已經是手機不離身的年代了,每天少則幾十通 推播通知 (Push Notification) ,多則上百通,大家是否思考過這些推播是怎麼作業的嗎?好吧!我自己也沒想過,因為一切都是這麼的自然XD。 推播對一個 App 來說是不可缺少的,畢竟不可能要求使用者一直開著 App,那如何要在使用者在未開啟 App 時來達到傳遞訊息呢?這時就可以用飛鴿傳書,或是請刺客來幫忙傳遞...,如果這些方法都不喜歡的話,那可以考慮用用費時又浪費資源的推播 Push Notification 來達到這個目的。 說到這邊,是否想到如果要做到推播就需要自己先建一個 Server 才能做到,答案是否定的,因為我們有強大的 Google 幫大家都已經架設好了,而且是『免費的』這才是最重要的,因此 Firebase 就這樣產生了!!這次就要教大家如何使用 Firebase 來做到 iOS Push Notification。 在開始教學前需要做一些準備: 一台裝好 Xcode 的 Mac 一個付費的 Apple developer account,沒錯就是那個每年要繳 99美元的帳號 一個 Google 帳號 一杯夠大杯的咖啡 (What?) 上面這些東西都準備好的話!我們就開始上課嚕~~ 這堂課會分 12 小節: ・Xcode 建立一個 Swift 專案 ・設定 Apple Developer Account ・產生 CSR 檔 ・上傳 CSR 檔 ・準備 APNs (Apple Push Notifications) 認證 ・Firebase 建立新專案 ・Firebase Push Notification 設定 ・撰寫設計一個支援 Firebase Push Notification 的 iOS App ・開啟 Push Notification 功能 ・匯入 GoogleService-Info.plist ・初始化 Push Notification 設定 ・測試 Firebase Push Notification Xcode 建立一個 Swift 專案 1. 開啟 Xcode,選擇『 Create a new Xcode project 』來建立一個新的專案 2. 選擇『 Singl...

《十分鐘學程式》Android -- 自訂 Listener

《Android 自訂 Listener》

當大家開發 Android 時一定會常用許多 Listener 監聽很多事情,最常用的莫過於 Button 的 OnClickListener,因為建立一個 Button 一定需要去監聽使用者何時點擊這個 Button。Android 很多原生的物件都已經幫我們建立好 Listener 的監聽,如果我們自己寫的 class 或是物件也要一個 Listener 是否可行呢? 答案是可以的。我們只需要透過 interface 建立自己自訂的 Listener 即可。接下來就來教大家如何建立一個簡單的 Listener 吧!!

首先我們先寫一個 class,專門來計時 100 秒。這裡我們取名為 Counter.class
程式碼如下
  1. public class Counter {
  2. private final static String TAG = Counter.class.getSimpleName();
  3.  
  4. public Counter() {
  5. }
  6.  
  7. public void printCount() {
  8. try {
  9. for(int i=0; i<100; i++) {
  10. Thread.sleep(1000);
  11. Log.d(TAG, "" + i);
  12. }
  13. } catch (Exception e) {
  14. e.printStackTrace();
  15. }
  16. }
  17. }
我們就把這個 class 拿來主程式使用吧!!
  1. public class MainActivity extends Activity {
  2. private static final String TAG = MainActivity.class.getSimpleName();
  3. private Counter counter = new Counter();
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. counter.printCount();
  9. }
  10. }

但是大家有沒有發現很奇怪得事情,我們主程式似乎沒有辦法知道這個計時器已經結束了。因此我們就可以寫一個 Listener 來監聽是否已經結束

需要先在 Counter.class 加上一個 interface 及 一個 setOnFinishListener function,廢話不多說,直接上程式吧!!
  1. public class Counter {
  2. private final static String TAG = Counter.class.getSimpleName();
  3.  
  4. private OnFinishListener onFinishListener = null;
  5. public interface OnFinishListener {
  6. void onFinish();
  7. }
  8. public Counter() {
  9. }
  10. public void printCount() {
  11. try {
  12. for(int i=0; i<100; i++) {
  13. Thread.sleep(1000);
  14. Log.d(TAG, "" + i);
  15. }
  16. } catch (Exception e) {
  17. e.printStackTrace();
  18. }
  19. }
  20. public void setOnFinishListener(OnFinishListener listener) {
  21. onFinishListener = listener;
  22. }
  23. }

當 Listener 都加好後,就可以在主程式開心的加上我們熟悉的 setListener 啦!!
  1. public class MainActivity extends Activity {
  2. private static final String TAG = MainActivity.class.getSimpleName();
  3. private Counter counter = new Counter();
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. counter.setOnFinishListener(new Counter.OnFinishListener() {
  9. @Override
  10. public void onFinish() {
  11. Log.d(TAG, "Counter Finish!!");
  12. }
  13. });
  14. counter.printCount();
  15. }
  16. }

這樣就可以輕鬆的監聽這個計時器結束啦!!

留言

熱門文章