Contact Framework equivalent to ABAddressBook.ABAddressBookRegisterExternalChangeCallback
<p>I am migrating an application from the deprecated Address Book Framework to the new Contacts Framework. The application utilizes <a href="https://developer.apple.com/library/ios/documentation/AddressBook/Reference/ABAddressBookRef_iPhoneOS/index.html#//apple_ref/c/func/ABAddressBookRegisterExternalChangeCallback"><code>ABAddressBookRegisterExternalChangeCallback</code></a> to be notified when another application changes a contact.</p>

<p>I am unable to find equivalent functionality in the Contacts Framework. Apple documentation says to use the default notification center with <a href="https://developer.apple.com/library/ios/documentation/Contacts/Reference/CNContactStore_Class/index.html#//apple_ref/doc/constant_group/CNContactStoreDidChangeNotification">the <code>CNContactStoreDidChangeNotification</code> notification</a>:</p>

<blockquote>
  <p>The notification posted when changes occur in another <code>CNContactStore</code>.</p>
</blockquote>

<p>Taking Apple's advice, my code looks like this:</p>

<pre><code>NSNotificationCenter.defaultCenter().addObserver(
    self,
    selector: "contactsChanged:",
    name: CNContactStoreDidChangeNotification,
    object: nil)
</code></pre>

<p>However, I have found two problems with this approach:</p>

<ol>
<li>I am notified for <em>all</em> changes, including those made by my own application.</li>
<li>Notifications are spurious - I receive many notifications for a single change.</li>
</ol>

<p>If I log the debug description of the notification when the change was made within my app, I get something like this:</p>

<pre><code>NSConcreteNotification 0x7d3370e0 {name = CNContactStoreDidChangeNotification; userInfo = {
    CNNotificationOriginationExternally = 1;
    CNNotificationSourcesKey =     (
    );
}}
</code></pre>

<p>And if the changes are made externally:</p>

<pre><code>NSConcreteNotification 0x7bf7a690 {name = CNContactStoreDidChangeNotification; userInfo = {
    CNNotificationOriginationExternally = 1;
    CNNotificationSourcesKey =     (
    );
}}
</code></pre>

<p>As you can see, nothing obvious with which to distinguish them.</p>

<p>Can anyone tell me how to get the same behavior from the Contacts Framework as one can get from <code>ABAddressBookRegisterExternalChangeCallback</code>?</p>