我有RhoMobile应用程序,用户可以在其中添加联系人到他们的移动设备。它适用于所有设备,包括Android,iOS 5及更低版本,但在iOS 6上无效。还有其他人有这个问题吗?我相信Apple改变了iOS 6上的PIM实现,这可能是导致问题的原因。
我的代码:
def add_contact
Rho::RhoContact.create! ({"first_name" => "John", "last_name" => "Doe"})
end
我在build.yml中启用了pim功能
任何帮助将不胜感激。
答案 0 :(得分:0)
从iOS 6起,应用无法在未经许可的情况下访问用户的联系人。当我们执行 - >卢:: 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-&gt; _ab是我的ABAddressBook参考
现在你应该好好去...希望这很有用......