近期因為有更新 iOS App 被 Apple 拒絕的問題,發現原本用來處理 Apple 要求的追蹤 Privacy 請求使用的AppTrackingTransparency
,撰寫在AppDelegate
類別的 FinishedLaunching
方法中變得不行了。
此追蹤 Privacy 政策可詳見 Apple 的官網說明:
https://developer.apple.com/documentation/apptrackingtransparency
由於這是從 iOS 14.5 之後開始就有的全新的隱私追蹤政策,先前 App 撰寫其 AppTrackingTransparency
,在AppDelegate
類別 FinishedLaunching
方法中撰寫,一直到 iOS 15.0.x 都能正確執行。
在 Apple 於 2020 年秋季開始實施此 追蹤 Privacy 政策 時,在本部落格也寫過一篇文章介紹:
https://dotblogs.com.tw/jamestsai/2020/12/18/The-new-privacy-of-Apple-Store-App-in-2020Q3-for-example-Taiwan-AskMaskFace-App
除了針對 App 要上架前須去 AppStore Connect 中完成 App 本身的隱私權宣告外,也需要在 App 當中的 info.plist 撰寫相關設定值。
並且也要執行 AppTrackingTransparency Manager 的程式運作,可參考以下連結介紹:
https://docs.microsoft.com/en-us/answers/questions/374387/ios-app-tracking-transparency.html
但不確定是在 iOS 15.1 之後,Apple 是不是又有針對此AppTrackingTransparency
的運作點又有進行什麼特殊的調整(有待查找資料…😮💨)。
導致於寫在 FinishedLaunching
方法當中的 AppTrackingTransparency
,在 15.1 版本以後 iOS 系統執行 App 時無法正確運作(也可能 iOS 15.0.x 之前 App 送審都還是有通過,所以就沒有發現此問題),進而 App 到 AppStore Connect 送審失敗。
本來還以為是 AppStore Connect 的隱私權宣告有問題,但後來查找了一下,發現也有其他的 iOS 開發者有類似的狀況:
https://www.jianshu.com/p/e9aebf32532c
而根據查找對照後 Xamarin.iOS 的 OnActivated
方法,是對應 iOS 原生 applicationDidBecomeActive
方法:
- https://stackoverflow.com/questions/45908331/what-is-the-correct-way-to-override-onactivated-in-xamarin-forms-am-getting-une
- https://stackoverflow.com/questions/30748555/when-is-applicationdidbecomeactive-called#30749362
- https://xamaui.net/xamarin-ios-onactivated
再根據 Microsoft docs 的官方文件說明:
https://docs.microsoft.com/zh-tw/dotnet/api/UIKit.UIApplicationDelegate.OnActivated
於是就確定要把原本寫在 FinishedLaunching
方法的 AppTrackingTransparency
的相關運作程式,改搬移到 OnActivated
方法當中撰寫, AppTrachingTransparency
就會被正確呼叫執行,改寫完成後重新封存,上傳新版到 AppStore Connect 送審通過,並且發行 App 成功!
😎😎😎
最後,若有要比較 Xamarin.iOS 跟 iOS 原生的 UIApplicationDelegate 設計的所有方法撰寫對照,請參考下列文件介紹:
https://docs.microsoft.com/en-us/dotnet/api/uikit.uiapplicationdelegate
I'm a Microsoft MVP - Developer Technologies (From 2015 ~).
I focus on the following topics: Xamarin Technology, Azure, Mobile DevOps, and Microsoft EM+S.
If you want to know more about them, welcome to my website:
https://jamestsai.tw
本部落格文章之圖片相關後製處理皆透過 Techsmith 公司 所贊助其授權使用之 "Snagit" 與 "Snagit Editor" 軟體製作。