iT 邦幫忙鐵人賽 Day 22: 再次向使用者請求開啟功能的權限。

當我們使用者再次進入需要權限的畫面,就在發出一次請求吧!

Jeremy Xue
3 min readNov 6, 2018

前言:

沒有允許開啟相機權限掃 QR Code 時的畫面

我們經常在開發 App 碰到需要要求使用者允許使用權限才能實作的功能,例如:地圖定位、相機應用或是推播通知,如果使用者沒有授權給我們,那麼他將無法使用這些需要授權的應用。那假如使用者第一次無意間按到不允許開放權限,又或是之後想要開啟需要權限的功能,那麼這時當使用者再次進入畫面時,我們就該再次詢問他是否要開啟功能。

#權限判斷

首先我們需要判斷使用者是否允許該功能的權限,這邊我要判斷使用者的在開啟掃描 QR Code 的畫面時,是否允許相機權限,所以在這邊我們會透過 authorizationStatus(for:) 這個方法的回傳的 AVAuthorizationStatus 來判斷,一共有以下四種的回傳值。

#AVAuthorizationStatus

  • .notDetermind :媒體捕獲需要明確的使用者權限,但用戶尚未允許或拒絕此權限。
  • .restricted:使用者不允許訪問媒體捕獲設備。
  • .denied:使用者明確的拒絕媒體捕獲的權限。
  • .authorized :使用者明確的允許媒體捕獲權限,或者對於相關媒體類型不需要明確的使用者權限。

當使用是者允許相機訪問權限時,那麼 AVAuthorizationStatus 就等於 .authorized ,所以我們現在需要對 .authorized 以外的情況去執行請求訪問相機的權限,所以我們會用 requestAccess(for:completionHandler:) 方法來訪問使用者,所以我們整體的程式碼如下:

所以當我們第一次開啟 App 沒有允許時,那麼進入條碼掃描的頁會出現:

這時候我們按下設定就會跳到關於這個 App 的設定,就可以設定關於這個 App 的權限或是其他設定:

後記:

透過這次教學後,我們就能夠去避免使用者第一次誤觸權限按鈕,按到不允許的狀況,如此一來我們就能夠很彈性的讓使用者自己開啟或關閉訪問的權限,當然我們這個 App 中的定位功能也能透過類似的方式實作,只是在這個 App 中我們不太需要用到,那麼我們這次的教學就到這邊結束了,下次再見~

--

--

Jeremy Xue
Jeremy Xue

Written by Jeremy Xue

Hi, I’m Jeremy. [好想工作室 — iOS Developer]

No responses yet