2013-01-02 2 views
0

사용자가 모바일 장치에 연락처를 추가 할 수있는 RhoMobile 응용 프로그램이 있습니다. Android, iOS 5 이하를 포함한 모든 기기에서 훌륭하게 작동하지만 iOS 6에서는 작동하지 않습니다. 이 문제를 가진 사람이 있습니까? 나는 Apple이 iOS 6에서 PIM 구현을 변경했다고 생각하며 이는 문제의 원인이 될 수 있습니다.PIM Contacts in Rhomobile

내 코드 : 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) -> 플랫폼 -> 아이폰 -> 클래스 -> 전화 번호부 -> 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 참조 이제

인이 유용 희망