2013-01-02 34 views
0

我有RhoMobile應用程序,用戶可以在其中添加聯繫人到他們的移動設備。它適用於所有設備,包括Android,iOS 5及更低版本,但不適用於iOS 6。有其他人有這個問題嗎?我相信Apple改變了iOS 6上的PIM實現,這可能是導致問題的原因。Rhomobile的PIM聯繫人

我的代碼:在build.yml

任何幫助

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

我已經啓用的PIM功能,將不勝感激。

回答

0

從iOS 6開始,應用程序無法在未經他們許可的情況下訪問用戶的聯繫人。當我們執行 - > Rho :: RhoContact.create! ,RhoMobile應用程序嘗試訪問用戶尚未提供的權限的地址簿。此外,該應用程序不會自行要求獲得許可。你需要在應用程序內強制觸發對許可的請求。

,你可以做到這一點,如下所示: -

前往羅德 - 3.4.3(我的羅德版本是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; 
在上面的代碼

,電話簿 - > _ AB是我ABAddressBook參考

現在你應該是好去...希望這是有益的...

相關問題