0

我正在實現一個應用程序,其中用戶應該能夠從地址簿中導入聯繫人或自己提供聯繫人。 我用https://github.com/soffes/sspersonviewcontroller實現了一切。 新的聯繫人被添加到地址簿,一切都很好。 我有所有的領域和使用ABPersonViewController等編輯功能...ABPersonViewController無法訪問地址簿

但現在客戶堅持,聯繫人不應該存儲在地址簿,但在應用程序,並永遠不應該要求用戶授予訪問權限除導入之外的地址簿。

我得到了「導入聯繫人到應用程序」通過使用一個ABRecordRef串行工作(從https://github.com/nvrooij/Let-s-Share/blob/master/Classes/ABRecordSerializer.h

但我最大的問題是,ABNewPersonViewController和ABPersonViewController堅持要求用戶訪問地址簿。

所以我需要:

  • 視圖不訪問地址簿創建聯繫人。它應該返回一個ABRecordRef給一個人,所以我可以序列化它的某處(atm我將它存儲到NSUserDefaults)

  • 一個編輯聯繫人而不訪問通訊錄的視圖。

什麼我已經嘗試過:How to Use a ABPersonViewController without connecting to AddressBook我設置displayedPerson - 但「授予訪問權限,彈出」仍然顯示。

從ABNewPersonViewController和ABPersonViewController的文檔中,我得到了這樣的印象:子類化和覆蓋地址簿的getter以在所有情況下返回nil都可以工作,並且我將結束與沒有地址簿的視圖。 但在某處(我假設視圖本身)地址簿是再次創建,我無法擺脫此調用。

您如何help_

任何指針重新實現ABPersonViewController(包括編輯功能)或任何其他提示是非常受歡迎的。

任何想法如何獲得創建用戶視圖控制器與所有的好東西(國家選擇,領域增加等)也非常受歡迎。

如果您認爲我的方法完全關閉,請同時發表評論。我一直在尋找不同的角度,並可能深入研究整個地址簿災難。

我希望控制器創建和編輯聯繫人將從地址簿完全解耦,並將返回一個ABRecordRef而不是訪問地址簿。在我的情況下,它會極大地簡化我的任務(一個人可以夢想)。

一切順利, iosGoblin

回答

1

我解決了/迴避的問題如下: 我放棄了編輯功能,我創建了類似於ABNewPersonViewController視圖控制器(僅適用於某些特定的領域,如姓名,surename,電話號碼,地址)。 從輸入我創建一個ABRecordRef(有用代碼http://www.modelmetrics.com/tomgersic/iphone-programming-adding-a-contact-to-the-iphone-address-book/)。 我這個序列化到接觸使用ABRecordSerializer(在我的問題鏈接)

如果用戶導入聯繫人我只是序列化的接觸我回來從的ABPeoplePickerNavigationController到NSUserDefaults的NSUserDefaults的。

如果聯繫存儲在NSUserDefaults中,我將反序列化並顯示它。

回顧:

  • 我重新實現降低ABNewPersonViewController的版本
  • 我使用串行器(上面的鏈接)來存儲在NSUserDefaults的接觸(無論是從我的視圖控制器或從進口之一,一旦它的串行化我不在乎了)
  • 我desirialize接觸,並顯示它

一切順利, iosGoblin