Xamarin Xamarin.iOS iOS Location

使用 Xamairn 開發 iOS App 時需要使用到定位資訊時的授權請求...

James Tsai 2018/05/29 09:57:39
260

使用 Xamairn 開發 iOS App 時需要使用到定位資訊時的授權請求...


簡介

只要開發 iOS 的開發者們應該都會被 Apple 規定 App 的相關授權請求搞得亂七八糟的,好一點可能在送審時就被 iTunesConnect 直接退件,差一點可能是上架了才發現執行 App 時會莫名其妙的閃退。說真的,沒有經歷過一定上架流程的經驗,這個問題絕對都是 iOS 開發者心中最痛的那塊。而最棒的是只要 Apple 每次大改 iOS 作業系統版本時,授權要求通常就會有所改變(簡而言之...就是 Apple 覺得之前這樣的設計不好,所以要改了),身為 iOS 開發者的我們就必須"與時俱進",不然上架的 App 就準備收到大量的"閃退"了。本篇文章我們就介紹一下在 iOS 11 的時候,有關於"位置"的授權改變...

作者

James Tsai


 

1. 前言

 
 
     只要是位 iOS 的攻城獅應該都被 Apple 規定 App 的相關授權請求搞得七葷八素的,好不容易寫完 App 上傳到 iTunesConnect 時,好一點可能在送審時就被 iTunesConnect 直接退件,差一點可能是上架了才發現執行 App 時會莫名其妙的閃退。說真的,沒有經歷過一定上架流程的經驗,這個問題絕對都是 iOS 開發者心中最痛的那塊。而最棒的是只要 Apple 每次大改 iOS 作業系統版本時,授權要求通常就會有所改變(簡而言之...就是 Apple 覺得之前這樣的設計不好,所以要改了),身為 iOS 開發者的我們就必須"與時俱進",不然上架的 App 就準備收到大量的"閃退"了。本篇文章我們就介紹一下在 iOS 11 的時候,有關於"位置"的授權改變...
 
 
 

2. 正文

 
 
  • 不囉嗦先上圖。
 
 
 
     擷取自 Apple WWDC 2017 Session 713 What's New in Location Technologies 的 Presentation Slides (PDF) 第 68 頁。
 
     這張圖要告訴攻城獅們現在 iOS 11 已改變成若要讓 App 取用 "位置" 資訊時,設定了圖中最下方的兩塊授權要求時,App 的使用者會遇到的彈跳訊息詢問情況。
 
 
 
  • 跟過去 iOS 10 以前最大不同的是: 不能不經過 "WhenInUse" 的使用者授權,以避免 App 直接要求使用者只能 "Always" 接受 App 取用位置資訊(就連不開 App 也可以背景取用)。
 
 
 
    圖片取自 JarvisMa' Blog 文章介紹: iOS 11 定位技术中的一些新特性
 
 
    圖片取自 JarvisMa' Blog 文章介紹: iOS 11 定位技术中的一些新特性
 
 
 
  • 所以 iOS 11 加入了一個新的位置請求的 Key : NSLocationAlwaysAndWhenInUseUsageDescription 值,若 App 有需要請求 "Alway" 允許位置資訊的時候,仍必須提供只有在使用該 App 的時候才可取用位置資訊的選擇。
 
 
 
     擷取自 Apple WWDC 2017 Session 713 What's New in Location Technologies 的 Presentation Slides (PDF) 第 68 頁。
 
 
 
  • 也就是說在 iOS 可預期的某個未來規劃中 "NSLocationAlwaysUsageDescription" 這個 Key 值有機會被刪掉。不過就目前的階段來說 NSLocationWhenInUseUsageDescription、NSLocationAlwaysAndWhenInUseUsageDescription、NSLocationAlwaysUsageDescription 這三個 Key 值都還是可以在 App 當中設定使用的(畢竟還不能確保你的 App 只會執行在 iOS 11 上)。
 
 
 

3. 結語

 
 
     在本篇文章中只討論 iOS 11 的位置資訊關於 "授權" 的改變,若想要更進一步了解 API 以及功能性上的調整,請參考 WWDC 2017 - Session 713 : What's New in Location Technologies 的介紹。
 
James Tsai