在过去的一天里,我一直在尝试最终确定一个访问用户通讯录中联系人的视图控制器。我一直在注册各种应用程序,并通过他们的注册流程,他们要求您访问您的地址簿。
这些应用有两种不同的方式处理地址簿访问:
该应用想要访问联系人,因此他们会显示一个UIAlertView窗口,上面写着:“我们需要访问您的地址簿。您可以通过转到设置>隐私>联系人>来启用此功能。打开App Name。
该应用想要访问联系人,因此他们会显示一个UIAlertView窗口,上面写着:“我们需要访问您的联系人以便我们找到您的朋友”
关于选项2的不同之处在于,在UIAlertView窗口中,它们实际上有2个“不允许”和“确定”按钮。
我的印象是,如果您实际按下“确定”,它将允许访问您的联系人,如果您按“不允许”,则会阻止该应用访问您的联系人。
但是,即使我在这些应用程序中按“确定”,它甚至不会更改隐私设置。按“不允许”也不会改变任何内容。
那么,这些应用程序是否因为某种原因选择显示“OK”和“Do not Allow”,尽管它们甚至不工作或者根本没有任何功能?我假设有一种方法可以以编程方式更改隐私设置,通过按“确定”按钮,可以调用实际执行某些操作的方法。
我在iPhone 4S上使用iOS 7.0.4,我最近刚开始为iOS开发,所以我只有iOS 7的使用经验。
我只是不明白什么是真的可能,以及为什么我会遇到上述行为。
如果有人能为我清除这一点,我会非常感激。
答案 0 :(得分:1)
第一个不会改变任何东西,因为它是一条指令,告诉您如何在设置应用程序中启用相关的隐私设置。您必须转到设置应用并导航到右侧视图并自行更改隐私设置
可以在iOS设备上访问用户的联系人。而且您不必编写自定义消息来告诉用户您需要该权限的原因。 Apple将使用系统alertView提示用户。我认为当你按下“ok”时,第二个应该调出系统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
}
答案 1 :(得分:0)
简短回答是,在用户第一次运行应用程序时选择了地址簿访问选项后,没有(Apple授权)方式以编程方式更改隐私设置。由于您概述的两个选项听起来都像是开发人员生成的,因此它们可以真正意味着做任何事情。