非推奨の Address Book Framework から新しい Contacts Framework にアプリケーションを移行しています。ABAddressBookRegisterExternalChangeCallback
アプリケーションは、別のアプリケーションが連絡先を変更したときに通知を受け取るために利用します。
Contacts Framework で同等の機能を見つけることができません。Apple のドキュメントでは、通知でデフォルトの通知センターを使用するように指示されていCNContactStoreDidChangeNotification
ます。
別の で変更が発生したときに投稿される通知
CNContactStore
。
Apple のアドバイスを受けて、私のコードは次のようになります。
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "contactsChanged:",
name: CNContactStoreDidChangeNotification,
object: nil)
ただし、このアプローチには 2 つの問題があることがわかりました。
- 自分のアプリケーションによるものを含め、すべての変更について通知されます。
- 偽の通知 - 1 つの変更に対して多くの通知を受け取ります。
アプリ内で変更が行われたときに通知のデバッグの説明をログに記録すると、次のようになります。
NSConcreteNotification 0x7d3370e0 {name = CNContactStoreDidChangeNotification; userInfo = {
CNNotificationOriginationExternally = 1;
CNNotificationSourcesKey = (
);
}}
また、変更が外部で行われた場合:
NSConcreteNotification 0x7bf7a690 {name = CNContactStoreDidChangeNotification; userInfo = {
CNNotificationOriginationExternally = 1;
CNNotificationSourcesKey = (
);
}}
ご覧のとおり、それらを区別する明確なものは何もありません。
から取得できるのと同じ動作を Contacts Framework から取得する方法を誰か教えてもらえますABAddressBookRegisterExternalChangeCallback
か?