0

私はこれをPhoneGapgoogleグループに投稿し、StackOverflowにクロス投稿しました。

とにかく、PhoneGapのContactAPI最近私に頭痛の種を与えています。短くするには:

環境

  • iOS 6
  • PhoneGap 2.0.0

VCardが埋め込まれたQRコードをスキャンするこのアプリケーションがあり、ユーザーが保存することに同意すると、ユーザーの連絡先に保存されます。で、このAndroid 4.1.2コードはエラーなしで問題なく動作し、連絡先も保存されました。しかし、では、それiOS 6を動作させることができません。私がいつも受け取っているのはerror #4、つまり、ContactError.IO_ERRORです。

コードは次のとおりです。

navigator.notification.confirm('Found a contact: "'+(vcard['N'] || '')+'". Add it into your contact list?', function(btn) {
    if (btn == 1) {
        var contact = navigator.contacts.create();

        contact.displayName = vcard['N'] || '';
        contact.emails = [new ContactField('email', vcard['EMAIL'] || '')];

        var org = new ContactOrganization();
        org.name = vcard['ORG'] || '';

        contact.organizations = [org];


        contact.save(function() {
            navigator.notification.alert('Contact Saved');
        }, function(err) {
            navigator.notification.alert('Error on saving contact: '+err.code);
        });
    }
}, 'QR Code Scanner', 'OK,Cancel');

そして、以下は、 「OK」をタップした直後にXCodeで見た唯一のログです:(最初のコールバックはnotification.confirm

2012-10-22 21:19:24.619 [11897:907] PluginResult:toJSONString - {"status":1,"message":1,"keepCallback":false}
2012-10-22 21:19:24.621 [11897:907] PluginResult toSuccessCallbackString: cordova.callbackSuccess('Notification12',{"status":1,"message":1,"keepCallback":false});
2012-10-22 21:19:24.738 [11897:907] PluginResult:toJSONString - {"status":9,"message":4,"keepCallback":false}
2012-10-22 21:19:24.739 [11897:907] PluginResult toErrorCallbackString: cordova.callbackError('Contacts13',{"status":9,"message":4,"keepCallback":false});

次に、アラートが表示されます。

Error on saving contact: 4

ノート

  • vcardは、vcardobjのキーと値のペアです。今のところこれは無視してください。大事なことじゃない。
  • このコードはAndroidで正常に機能します。

これは連絡先を作成する正しい方法ですか?PhoneGapを使用してiOS6で連絡先を保存するにはどうすればよいですか?

編集

必要なすべての移行を行い、v2.1.0にアップグレードしましたが、それでもエラーコードが表示されます。どうしてこれなの?

編集

どうやらこれは、Markが述べたようにiOS 6での新しいAddressBook許可要求と関係があるようですが、それを正しく行う方法について誰も私に答えていません。調査に何度か費やしたところ、v2.2 rc2 commit 61857860のCDVContacts.mに許可要求が追加されているのを見て、Phonegapがv2.2を終了するのを待つことが最善であるという結論に達しました...

4

2 に答える 2

2

https://issues.apache.org/jira/browse/CB-902

現在、ユーザーが iOS 6 で AddressBook 権限を持っていない場合にクラッシュします。ユーザーは、Geolocation 権限ダイアログに似たポップアップ ダイアログを受け取ります。アドレス帳を作成するときは、アプリに権限がなく、返されたアドレス帳が NULL であるという条件を処理する必要があります。

于 2012-10-26T19:38:11.650 に答える
0

私は同じ問題を抱えていました。結局のところ、iOS 6 をサポートしていない phonegap バージョン 1.9 を使用していたため、連絡先を追加すると常にエラー 4 メッセージが表示されました。これを修正するために、phonegap バージョン 2.1 にアップグレードしました。このバージョンは、iOS 6 だけでなく、armv6 と armv7 の両方のアーキテクチャをサポートしています。このエラー メッセージは、iOS で GPS を使用するにはアクセス許可が必要なのと同じように、iOS 6 ではアドレス帳にアクセスするためのアクセス許可が必要なためです。これはあなたの問題を解決するはずです、それは私のためにしました:)

于 2013-01-11T13:21:49.390 に答える