在Rhomobile的PIM联系人



我有一个RhoMobile应用程序,用户可以在其中添加联系人到他们的移动设备。它在所有设备上都运行良好,包括Android、iOS 5及以下版本,但在iOS 6上不起作用。还有其他人有这个问题吗?我相信苹果改变了iOS 6的PIM实现,这可能是导致问题的原因。

我代码:

def add_contact
    Rho::RhoContact.create! ({"first_name" => "John", "last_name" => "Doe"}) 
end

我在build.yml

中启用了pim功能

任何帮助都将非常感激。

从iOS 6开始,未经用户允许,应用程序无法访问用户的联系人。当我们执行-> Rho::RhoContact.create!, RhoMobile应用程序试图访问用户尚未授予的地址簿权限。此外,该应用程序不会自行请求许可。你需要从应用内部强制触发权限请求。

你可以这样做:-

转到rhodes -3.4.3(我的rhodes版本是3.4.2)-> platform -> iPhone -> Classes -> Phonebook -> 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引用

现在你应该可以走了…

相关内容

  • 没有找到相关文章