2012-10-23 52 views
1

我有這個posted on PhoneGap google groups但我認爲在這裏發佈會幫助我以某種方式,有點迫切需要在今天或明天完成此操作。在iOS上保存聯繫人時發生Phonegap ContactError 6

無論如何,PhoneGap的Contact API最近讓我頭痛。長話短說:

環境

  • 的iOS 6
  • 的PhoneGap 2.0.0

我有這樣的應用程序,它可以掃描與電子名片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'); 

而下面是我看到的了XCode 我就「OK」點擊右側後唯一的日誌:(第一回調是爲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是一個鍵 - 值對電子名片的obj的。現在請忽略此。這並不重要。
  • 這段代碼在Android上正常工作。

這是創建聯繫人的正確方法嗎?如何使用PhoneGap在iOS 6上保存聯繫人?

歡迎任何幫助!我在這裏需要一些輕;)

編輯

像花一個小時做所有必要的遷移和升級到V2.1.0,但錯誤代碼仍然出現。爲什麼?!

編輯編輯

我是又結束這場賞金2小時的路程我不能獲獎,因爲它不是最終的答案?

顯然這與Mark 6提及的iOS 6上的新地址簿權限請求有關,但沒有人回答我如何正確執行此操作。在研究中花費了一些時間後,我得出結論:如果我們能夠等待Phonegap完成第2版,那麼最好。2,因爲我看到在CDVContacts.m in v2.2 rc2 commit 61857860...

回答

0

我有同樣的問題。事實證明,我使用的電話版本1.9,不支持iOS 6,因此添加聯繫人一直給我發送錯誤4消息。爲了解決這個問題,我升級到手機版本2.1。該版本支持iOS 6以及armv6和armv7體系結構。錯誤消息是因爲iOS 6需要訪問地址簿的權限,與使用GPS需要iOS上的權限的方式相同。這應該解決你的問題,它對我來說:)

+0

謝謝。這個項目已經關閉了一段時間。最後我沒有解決這個問題(如果我沒有錯的話)。我們在那個時候忽略了iOS6,因爲iOS6剛剛問世,我們沒有多少時間來處理這個問題。 –

2

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

如果用戶沒有在iOS 6 通訊錄的權限的用戶將獲得類似的地理定位權限對話框彈出對話框目前正在崩潰添加權限申請。在創建地址簿時,我們應該處理應用程序沒有權限的情況,並且返回的地址簿爲NULL。

+1

所以,我應該如何解決這個問題?通過修改CDVContacts.h/m文件? –

相關問題