大家好,我是彼得潘,我將在 11 月推出兩門 iOS App 課程,分別針對有程式背景和無程式基礎的學生。我會一步一步慢慢教,搭配溫暖的冷笑話,帶著你開心地從無到有創作出自己的 App,歡迎有興趣的朋友們參考。有任何 iOS App 開發或程式設計的相關問題,也都歡迎跟我聯絡,謝謝。


在 iOS App 開發推播功能時,我們必須搭配一個負責發送推播的 provider(後台),由它通知 Apple 的 APNs server 發送推播。

有的公司會請後台工程師撰寫 Provider 通知 APNs server 的程式,有的則會使用 Firebase Cloud Messaging(FCM) 當 provider。接下來我們將說明如何不靠後台工程師,透過 Firebase Cloud Messaging(FCM) 搭配 APNs Key(p8) 發送推播。

加入 FCM 前的準備: 讓 iOS App 能收到 APNs 發送的推播

為了讓 iOS App 能收到 APNs 發送的推播,我們必須先進行相關的設定和程式撰寫。

參考以上文章的說明完成以下部分:

下載發送推播需要的 APNs key(p8)


發送推播給安裝 App 的所有使用者

連到 Firebase 的專案頁面,點選 Engage 下的 Cloud Messaging

點選 Send your first message 或 New notification

第一次發送時選擇 Send your first message。


在 iOS App 開發推播功能時,我們必須搭配一個負責發送推播的 provider(後台),由它通知 Apple 的 APNs server 發送推播給使用者。

有的公司會請後台工程師撰寫 Provider 通知 APNs server 的程式,有的則會透過 Firebase Cloud Messaging(FCM)。如果只是想測試推播功能,我們可以使用以下介紹的 Push Notification App 當 provider,直接在 Mac 測試推播的發送。

下載 Push Notifications App

從以下連結下載最新版安裝。

啟動 Push Notifications

Push Notifications 可以發送推播給 iOS & Android,讓我們拋開 Android,只專注在 iOS 吧。

當我們想發送推播時,必須通知 APNs server。為了安全性的考量,pr …


最近東京奧運正在進行,期待台灣的桌球神童林昀儒有好成績。剛學會 IBOutlet & IBAction 的朋友,可以試試模仿 App Store 的桌球計分板 App,方便未來跟朋友 PK 時使用。(ps: 也可以製作其它運動或遊戲的計分板)

功能需求

參考 Simple Table Tennis Scoreboard 的畫面。

  • 每局 11 分制,輸流發球,發球時每 2 球輪替一次。
  • 點選數字會增加分數,上方的小數字代表雙方獲勝的局數,下方的大數字代表目前局數的比分。
  • 目前的發球方下方顯示 Serve。
  • 點選 Reset 會將比數清空,大數字和小數字都清成 0。
  • 可在畫面上輸入雙方的名字,比方左邊顯示帥氣的 Peter,右邊顯示弱弱的 Hook 船長。
  • 更換背景。

從模擬器連線

網址設為 127.0.0.1,localhost 或 Mac 目前的 IP。

class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!

func fetchImage() {
let url = URL(string: "http://127.0.0.1/peter.png")!
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
DispatchQueue.main.async {
self.imageView.image = UIImage(data: data)
}
}
}.resume()
}

override func viewDidLoad() {
super.viewDidLoad()

fetchImage()
}
}

ps: 在 iOS 14 之前(包含 iOS 14)的版本設為 localhost 會有問題,必須額外設定 Allows Local Networking。

從實機連線

輸入 Mac 目前的 IP。

let url = URL(string: "http://192.168.1.105/peter.png")!

查詢 Mac IP 的方法

點選右上的 wifi 圖示,從選單點選 Network Preferences。


在 iOS App 顯示月曆時,星期幾的語言比較特別,它預設會顯示英文,若想顯示其它語言,必須另外在 App 裡設定支援某某語言才能顯示。

比方我們想顯示中文,點選專案後,切換到專案的 Info 頁面,然後在 Localizations 區塊點選下方的 +,增加 Chinese, Traditional。


接 iTunes Store API & RSS Feed 產生器的熱門電影 JSON,實作 iTunes Store App 的搜尋結果頁面 & 電影排行榜。

功能和畫面需求

搜尋結果頁面

  • 輸入搜尋的文字,顯示相關的內容。
  • 從 segmented control 切換分類。


模仿 Steve Jobs 1984 第一次介紹 Mac 的 demo,在 iOS App 利用 AVSpeechSynthesizer 念出 Hello, I am Macintosh 的感人文字。(ps: 也可以改成 I am iPhone)

Hello, I am Macintosh. It sure is great to get out of that bag!  

Unaccustomed as I am to public speaking, I'd like to share with you a maxim I thought of the first time I met an IBM mainframe: Never trust a computer that you can't lift!

Obviously, I can talk, but right now I'd like to sit back and listen. So it is with considerable pride that I introduce a man who has been like a father to me... Steve Jobs!

功能需求

  • 利用 AVSpeechSynthesizer 念出 Hello, I am Macintosh 的感人文字。
  • 模仿 demo 畫面,畫面上的文字段落隨著講話依序出現。(提示: 搭配 AVSpeechSynthesizerDelegate)

彼得潘的 iOS App Neverland

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store