从 iOS 6 开始,应用程序无法在未经用户许可的情况下访问用户的联系人。当我们执行 -> Rho::RhoContact.create!,RhoMobile 应用程序会尝试访问用户尚未授予的权限的通讯簿。此外,该应用程序不会自行请求许可。您需要从应用程序内强行触发许可请求。
你可以这样做: -
转到 Rhodes-3.4.3(我的 rhodes 版本是 3.4.2) -> 平台 -> iPhone -> 课程 -> 电话簿 -> Phonebook.m
在文本编辑器或 xCode 中打开它。
在页面顶部,定义以下内容:-
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
完成后,找到函数->
void* openPhonebook()
找到线->
memset(phonebook, 0, sizeof(LocalPhonebook));
在此行下方,将存在的任何代码替换为 ->
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {
CFErrorRef myError = NULL;
phonebook->_ab = ABAddressBookCreateWithOptions(NULL, &myError);
ABAddressBookRequestAccessWithCompletion(phonebook->_ab, ^(bool granted, CFErrorRef error) {
if (granted) {
phonebook->_people = NULL;
phonebook->_len = 0;
} else {
// Handle the error
}
});
}
else{
// for iOS < 6
phonebook->_ab = ABAddressBookCreate();
if (phonebook->_ab) {
phonebook->_people = NULL;
phonebook->_len = 0;
}
}
return phonebook;
在上面的代码中, phonebook->_ab 是我的 ABAddressBook 参考
现在你应该很高兴......希望这很有用......