Just My Life & My Work

Posts tagged ‘ios’

App 遠端推播流程

現在大家用智慧手機,有網路的狀態下,總是會持續接收到遠端推播,可說是非常重要的功能。

.

在現今行動裝置普及的時代,遠端推播通知已成為企業與用戶之間最直接且即時的溝通管道。透過推播,企業能在第一時間將重要資訊、最新優惠或系統提醒送達使用者手機螢幕,不需要依賴電子郵件或使用者主動開啟應用程式,就能達到即時互動的效果。這種即時性不僅提升了資訊傳遞的效率,也大幅增加了用戶的參與度與黏著度。

對企業而言,推播是一種低成本但高效益的行銷工具。透過精準的分眾與內容設計,可以將正確的訊息送到正確的使用者手中,進而提升轉換率與品牌價值。而在服務應用層面,推播能即時提醒使用者系統異動、交易狀態更新或安全通知,強化使用者體驗與信任感。

此外,推播在使用者行為數據的收集與分析上也扮演關鍵角色。企業可藉由用戶對推播的反應,優化行銷策略與產品功能,形成良性循環。綜合來看,手機遠端推播不僅是一項技術工具,更是企業經營、用戶體驗與數據分析之間的重要橋樑,在現代數位生態中具有不可或缺的戰略價值。

(繼續閱讀…)

[iOS] 推播驗證區分 p12 憑證與 p8 金鑰

最近需要整合中國可比較順利收到遠端推播的平台極光,我們決定使用最新的 Apple 推播通知(APNs)認證機制。

先前已有在文章:Apple 推播通知服務憑證更新研究過,了解舊的 p12 憑證與新的 p8 金鑰之差異,有更好的方法就與時俱進吧!

.

1. .p12 憑證

  • 舊機制:以前要使用 APNs,必須在 Apple Developer 產生「推播憑證(Push Certificate)」,然後把它匯出成 .p12 檔案(包含憑證與私鑰)。
  • 綁定性高:這個 .p12 是針對「單一 App」產生的,每個 App 要推播就得有自己的憑證。
  • 管理麻煩:如果有很多 App,要管理很多 .p12,到期還得逐一更新。

2. .p8 金鑰

  • 新機制 (2016 後):Apple 推出了「APNs Auth Key」機制,用 .p8 私鑰檔案來取代傳統憑證。
  • 好處
    • 一把 .p8 金鑰可以同時支援多個 App,不需要為每個 App 建立不同檔案。
    • 不會每年過期,只要不撤銷,金鑰就一直有效。
    • 伺服器端使用 JWT(JSON Web Token)來跟 APNs 做身份驗證,安全性更好。
  • 限制:一個 Apple 開發者帳號最多能建立 2 組 APNs .p8 金鑰。

小結

  • .p12 → 舊式、以「App」為單位的憑證,會過期,需要管理多份。
  • .p8 → 新式、以「帳號」為單位的金鑰,不會過期,維護更簡單。
(繼續閱讀…)

[Flutter] iOS CICD 流程

原本 App Team 包含我僅有兩位開發者,我負責領導開發忙得不可開交。去年 Q4,親自招募兩位新人進駐,我終於可以有空閒時間做 Flutter App 的 CICD。🙂

2019 年在港商工作時,已有建置 iOS CICD 流程經驗,所以首選 Jenkins 來作為持續整合工具,節省研究時間,稍微比較其他工具後,認為 Jenkins 相關套件外掛多,未來有需有可以擴充。另因 Jenkins 有直覺的操作介面,使得無論是工程人員或是團隊其他成員,都能迅速上手。

註:

  • CI(Continuous Integration,持續整合)
  • CD(Continuous Delivery / Continuous Deployment,持續交付 / 持續部署)

簡單比喻

  • CI:像是每次寫完一小段文章就馬上拼到全文裡,再跑拼字檢查。
  • CD:檢查通過後,自動把這篇文章印刷出版(交付)或直接送到讀者家(部署)。

我將 Shell Scrip 流程圖解如下:

.

(繼續閱讀…)

Flutter 技術重點

由於已經多年寫 Flutter App,為了讓初學者快速進入狀況,有必要列舉出 Flutter 技術重點。之後再撰寫從原生 App 轉開發 Flutter App 的遷移重點。🙃

本文將列出 Flutter 的十項技術重點,幫助開發者更好地理解和運用這個強大的 UI 工具包。Flutter 是由 Google 開發的開源框架,旨在幫助開發者快速構建高效能、美觀的跨平台應用。以下是 Flutter 的主要技術特點。

(繼續閱讀…)

[圖解] 如何發佈行動應用程式

從 2012 年開始,我就從事行動應用程式開發(主要是 iOS App),至今已超過 10 年。當有人想知道我做什麼工作時,我必須短時間內說明清楚,只是一直沒找到好的描述方式,能讓外行的親友理解。

遇到神人做了這張圖,簡單描繪出我這些年來的工作日常~😎

行動應用程式發布過程的典型階段:

  1. 註冊與開發
  2. 建置和測試
  3. 品質保證
  4. 內部審核
  5. 應用程式商店優化
  6. 應用程式提交至商店
  7. 發布
(繼續閱讀…)

[iOS] WKWebView 與 Native 互通資料

現在製作 App,很多時候需要嵌入 WebView,如此能快速開發與更新。既然 App 與 Web 互動頻繁,那麼就需要來了解如何讓 WKWebView 與 Native 互通資料

多年前我也有寫過 Objective C與Javascript的溝通,然而那時還能使用 UIWebView,現在已經被棄用,所以我們就直接使用 WKWebView 吧!

(繼續閱讀…)

萬年老系統

萬年老系統是非常誇張的說法,我寫 iOS App 是從 iOS 6 開始,至今 2022 年已邁入 iOS 16,若說是老系統,應該頂多 16 年啦~😀

實際上現在公司的產品,是從 2016 年開始(看程式檔案有年份),還是使用 Objective C 開發,至今邁入第七年,我發現是有四個工程師陸續接手研發,因為有看到作者名字和程式風格。

因為我一直是開發 iOS App,所以一個月內我就對大部分的功能流程熟悉,包含串接後端 API 部分,只要有使用到的 API,一定給他測個成功和失敗案例。

目前公司後端工程師數量遠超過前端,畢竟後端模組至少有 10 個吧~假如 iOS 和 Android 勉強算兩個模組,可見後端複雜度之高~🤪

稍微了解 API 後,我明白後段相依性很大,想要在舊有錯綜複雜邏輯下往上加功能,肯定會有一些出乎意料之外的狀況。讓我想起萬年老系統那張圖~很是貼切呢!

總之,且戰且走,我們採滾動式開發~盡可能不要讓前端拿到有問題的 API 就好啦!😜

若有朋友需要開發 App,歡迎來找我喔~

[iOS] Jenkins 建置 CI/CD 流程

夥伴們正如火如荼趕上線,我也趕緊利用開發閒置的時間,進行 Jenkins 建置 CI/CD 流程

此流程對於大型團隊相當有助益,不過就算是一人團隊,若產品專案需要每隔一段時間釋出給他人測試,有持續部署機制就會節省許多時間!

早在 2018 年,我香港團隊就實施 Jenkins CI/CD 流程,我們 iOS 和 Android 團隊各有四個工程師,有此持續整合迭代流程,就可以很順暢地進行開發~😀

(繼續閱讀…)

[iOS] 服務器的證書無效問題

理論上憑證和網域必須一致,可是有時候想在不一致時來連線,遇到被阻擋問題該如何解決呢?

(繼續閱讀…)

[Xcode] Crashes 崩潰紀錄

現在看崩潰紀錄,有另一個選擇,就是直接在 Xcode 中查看,不過這也得用戶願意分享,才能獲取到其崩潰紀錄。

在此我就以兩個我經手的 App,可以看到跟我們 debug 時出現的一樣,而且有更多的手機資訊,如 Device、iOS、Architecture 等等。

我還是覺得,Firebase Crashlytics 紀錄比較詳細啦~🙃

事實上,很多工具都是第三方做得很棒,然後大廠就直接出價買下來佔為己有!像是 Google 收購 Firebase 和 Crashlytics,或是 Apple 收購 Testflight,開發贏不過,就直接收購。

標籤雲