跳到主要內容

精選

《十分鐘學程式》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...

《十分鐘學程式》iOS(Swift) -- Dynamic Library(動態函式庫) / Static Library(靜態函式庫) 比較

相信接觸過程式語言有段時間的人都知道有函式庫 (我們都叫做 Library) 這種東西,如果剛接觸的人可以把 Library 想成是圖書館,沒錯!就是直譯~哈哈!!(這是一個超爛的舉例,等想到更好的我在更新),每個人都可以建立屬於自己的 Library,裡面有自己編輯的功能等。不過通常我們在寫程式時,會使用很多第三方 (某某人開發,非官方) 或是原生的 Library,這不代表我們偷懶 (其實有時候的確是這樣XD),而是這樣可以更有效率的開發,而且也可讓程式碼更乾淨。

Library 其實可以分為兩大類,Dynamic Library (動態函式庫)Static Library (靜態函式庫)。不論 Windows、Linux、Android、mac 等系統,可以分為這兩類。這兩類最大的差別就是連接方式,看是動態連接還是靜態連接。

◎ Static Library (靜態函式庫)

靜態函式庫就是利用『靜態連接』。像是 Windows 的 .lib 檔,Linux 和 mac 的 .a 檔。靜態函式庫在編譯的時候會複製一份到執行檔,所以執行檔的檔案大小相對上來說會比較大,而且在編譯過後,如果靜態函式庫有修改過就需要再重新編譯一次。這樣說起來似乎靜態庫一堆缺點,大家幹嘛還要用它,其實靜態庫有一個最大的優點,就是只要確定開發者的開發環境擁有正確的靜態庫就可以,這可是讓靜態庫一直都還存在著最大的因素喔!

◎ Dynamic Library (動態函式庫)

動態函式庫當然就是利用『動態連結』。像是 Windows 的 .dll 檔,Linux 的 .so 檔,mac 的 .dylib/.tbd 檔。動態庫在編譯時並不會複製一份到執行檔內,而是在需要的時候才加載進來執行,因此執行檔的大小就會小的許多。並且動態庫更新只需要更新函式庫本身,並不需要重新編譯執行檔。這樣把動態庫捧得像神似的,雖然說動態庫真的很好用,不過它有一個非常致命的缺點,就是執行程式的環境需要有此動態庫,而且有時候版本不一樣也很容易出現許多不可預期的錯誤。

◎ iOS Framework

不過之前有看過《十分鐘學程式》iOS Swift -- Framework 製作《十分鐘學程式》iOS Swift -- Framework 使用課程的人應該頭上有不少問號,怎麼沒有提到 Framework?其實 Framework 是一種打包方式,並不能說它是動態庫還是靜態庫,因為 Framework 有動態庫也有靜態庫。Framework 是將函式庫的二進制檔 (就是0101這種東西)、標頭檔和一些資源的檔案包在一起。其實在 iOS 8 之前 Framework 是不支援動態庫的,不過現在也幾乎沒有人在使用 iOS 8 以前的版本了,所以這邊就不在追述了。

◎ 如何判別 Framework 是動態庫還是靜態庫

剛剛說 Framework 可以是動態庫也可以是靜態庫,而且兩這者的副檔名又偏偏都一樣是 .framework,那麼到底要怎麼知道自己手邊的 Framework 是動態還是靜態的呢?其實很簡單,只要在 Terminal (終端機) 檢視檔案就可以清楚。

1. 先打開 Terminal (如果不知道怎麼打開的人,可以利用快捷鍵 command + space 然後輸入 Terminal )


2. 輸入 file,然後找到要確認的 Framework 檔,將 Framework 下的 .exec 直接拖拉到 Terminal,最後按下 enter

3. 如果顯示『dynamically linked shared library』就代表這個 Framework 是動態的

4. 如果顯示『current ar archive』就代表這個 Framework 是靜態的

◎ 如何判別 Framework 是實機用還是虛擬機用

在之前說過,Framework 是有分實機和虛擬機使用的 (其實也有共用的,但須自行合併)。當提供 Framework 的人沒有特別說明是哪個環境使用的,我們該如何分辨呢?其實一樣只要用 Terminal 就可以窺探究竟。

1. 在 Terminal 輸入 lipo -info,然後一樣把 Framework 的 .exec 檔拖到 Terminal,按下 enter

2. 看最後可以看出支援哪些 CPU 指令集
實機:armv6、armv7、armv7s、arm64 ...
虛擬機:i386、x86_64...

留言

熱門文章