gpt4 book ai didi

iOS 应用程序在后台崩溃,因为设置->隐私->联系人我的应用程序开/关

转载 作者:可可西里 更新时间:2023-11-01 03:14:54 26 4
gpt4 key购买 nike

在我的应用程序中,我直接获取联系信息购买这样做...

ABAddressBookRef m_addressbook = ABAddressBookCreate();

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(m_addressbook);

CFIndex nPeople = ABAddressBookGetPersonCount(m_addressbook);

for (int i=0;i < nPeople;i++)
{
ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);
CFStringRef company,firstName,lastName;

firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
lastName = ABRecordCopyValue(ref, kABPersonLastNameProperty);
company = ABRecordCopyValue(ref, kABPersonOrganizationProperty);
}

所以,我需要先检查这是否是我的应用程序的开/关设置 --> 隐私 --> 联系人开/关。

为此,我正在这样做:

__block BOOL accessGranted = NO;


float sysver = [[[UIDevice currentDevice]systemVersion]floatValue];

if(sysver>=6) {
ABAddressBookRef addressBook = ABAddressBookCreate();

if (ABAddressBookRequestAccessWithCompletion != NULL) {
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
accessGranted = granted;
dispatch_semaphore_signal(sema);});

dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release(sema);
} else {
accessGranted = YES;
}
} else {
accessGranted = YES;
}

if(accessGranted)
{
// doing my stuff and moving on
} else {
// please make Settings --> Privacy --> Contacts my app. ON for accessing contacts.
}

我的问题是,在设备上安装应用程序后的第一次,应用程序要求我“不允许”/“确定”警报以获取联系人授予访问权限。我点击了确定,但设置 --> 隐私 --> 我的应用程序的联系人已关闭,所以再次收到警报以将其打开,“设置”“确定”因此选择了设置,然后我将其打开,一旦我打开应用程序没有得到 SIGKILL 来控制。

后来每当我将隐私设置更改为 OFF 到 ON 应用程序在后台崩溃。我得到 SIGKILL 没有什么可安慰的。

提前致谢。

最佳答案

发现了另一个有类似问题的帖子 here .

当隐私设置更改时,每个应用程序的预期操作系统功能都会终止。这是为了确保每个应用程序都遵守用户隐私,并且在更改隐私设置后不会继续使用任何缓存数据。

另请注意您建议的代码

float sysver = [[[UIDevice currentDevice]systemVersion]floatValue];
if(sysver>=6) {

Apple 不推荐,有更好、更官方的方法,例如使用 Foundation #define 值,即

BOOL isiOS6OrMoreRecent = NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_6_0 ? YES : NO;

但是,使用 iOS 版本来确定可用功能是非常糟糕的做法,而是独立于操作系统版本检查功能本身(地址簿代码 here,例如:

if (ABAddressBookRequestAccessWithCompletion) { // if in iOS 6
// Request authorization to Address Book
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);

关于iOS 应用程序在后台崩溃,因为设置->隐私->联系人我的应用程序开/关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19360798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com