Home 寫程式[iOS] APNs 與 DeepLink 的 APP 開啟順序

[iOS] APNs 與 DeepLink 的 APP 開啟順序

by 艾普利

Photo by Jamie Street on Unsplash

這幾天收到了關於 APNs Log Event 的傳送問題,因為這個問題才發現到 APNs 與 DeepLink 在開啟APP的 function 觸發的順序不太一樣

簡單的說一下 APNs  與 DeepLink

APNs

全名是 APPLE Push Notification service 的縮寫,也就是推播系統,這裡指的推播是指 Remote  Notification ,是由遠端系統發送資訊給手機端,用途有很多種,遊戲APP最常拿來做活動通知

想更了解APNs 可以參考APPLE 官方說明 APNs / User notifications

DeepLink

就是可以讓你自定URL Schemes,可以讓你利用這個URL來開啟APP,不過如果APP不存在是不會幫你連到APP Store 下載的

想更了解DeepLink請參考官方說明 Custom url scheme

Universal Link

另一個比較常聽到的就是Universal Link ,它並不是DeepLink,但是有相似的功能,最明顯的差異在於Universal Link 是和一般網頁一樣 https:// 開頭,而DeepLink 就是自定的如:ABC://

可參考官方說明 Universal link


回到正題

一般Launch App 的流程

didFinishLaunch ➡️ applicationDidBecomeActive

DeepLink 開啟 App 的流程

didFinishLaunch  ➡️  application open url  ➡️ applicationDidBecomeActive

Push Notification 開啟 App 的流程

didFinishLaunch➡️ userNotificationCenter(_:didReceive:withCompletionHandler:) ➡️ applicationDidBecomeActive➡️ application open url

注意到applicationDidBecomeActiveapplication open url 在這二個情況下的執行順序不同嗎?

說真的平常不太會留意到這樣的情況,因為無論誰先誰後都可以順利開啟APP且執行到應該要做的事情

這次沒有log紀錄的需求的話,也許就不會有機會發現這件有趣的事

希望大家 Coding 愉快~

You may also like