簡體   English   中英

以編程方式更改iOS上的隱私設置

[英]Programmatically changing privacy settings on iOS

在過去的一天里,我一直在嘗試最終確定一個訪問用戶地址簿中的聯系人的視圖控制器。 我一直在注冊各種應用程序,並通過他們的注冊流程,他們要求您訪問您的地址簿。

這些應用程序有兩種不同的方式處理通訊簿訪問:

  1. 該應用程序需要訪問聯系人,因此他們會顯示一個UIAlertView窗口,其中顯示如下內容:“我們需要訪問您的地址簿。您可以通過轉到”設置“>”隱私“>”聯系人“>”啟用應用程序名稱“來啟用此功能。

  2. 該應用程序需要訪問聯系人,因此他們會顯示一個UIAlertView窗口,上面寫着:“我們需要訪問您的聯系人才能找到您的朋友”

關於選項2的不同之處在於,在UIAlertView窗口中,它們實際上有2個“不允許”和“確定”按鈕。

我的印象是,如果您實際按下“確定”,它將允許訪問您的聯系人,如果您按“不允許”,它將阻止該應用訪問您的聯系人。

但是,即使我在這些應用程序中按“確定”,它甚至不會更改隱私設置。 按“不允許”也不會改變任何內容。

那么,這些應用程序是否只是出於任何原因選擇顯示“OK”和“Do not Allow”,盡管它們甚至根本不工作或者根本沒有任何功能? 我假設有一種方法可以以編程方式更改隱私設置,並且通過按“確定”按鈕,正在調用實際執行某些操作的方法。

我在iPhone 4S上使用iOS 7.0.4,我剛剛開始為iOS開發,所以我只有iOS 7的經驗。

我只是不明白什么是真的可能,為什么我遇到上述行為。

如果有人能為我清除這一點,我會非常感激。

第一個不會改變任何東西,因為它是一條指令,告訴您如何在設置應用程序中啟用相關的隱私設置。 您必須轉到設置應用並導航到右側視圖並自行更改隱私設置

可以在iOS設備上訪問用戶的聯系人。 而且您不必編寫自定義消息來告訴用戶您需要該權限的原因。 Apple將使用系統alertView提示用戶。 我認為當你按下“確定”時,第二個應該調出系統alertView。

您必須在訪問用戶的聯系人之前輸入以下代碼。 applicationDidFinishLaunching中的某處應該是好的。

ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);

  if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {
    ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) {
      if (granted) {
          // access has been granted.
      } else {
          // User denied access
      }
    });
  }
  else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {
    // The user has previously given access
  }
  else {
    // The user has previously denied access

  }

簡短的回答是,在用戶第一次運行應用程序時選擇了地址簿訪問選項后,沒有(Apple授權)方式以編程方式更改隱私設置。 由於您概述的兩個選項聽起來都像是開發人員生成的,因此它們可以真正意味着做任何事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM