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 参照です
これで準備完了です...お役に立てば幸いです...