It is indexed as indicated. Therefore, if you put your spotLightIndexing method in didFinishLaunchingWithOptions , it will naturally index the elements of each run, unless you set bool, of course. If the application is uninstalled, it will be indexed again, since the NSUserDefault values ββwill be reset. That's why they suggest you add / modify / update indexes using batch updates or other methods as annotated here
Since you are populating it from a local plist unlike the Internet, you will need to do the updates yourself or create an application extension to support the index.
If you watch the WWDC video in this section, you will see that it is easy to update or delete domains as a βgroupβ using a domain identifier. Source Good watch.
As for keywords, until it is confirmed that the documents fully support the iOS9 API. But just by reading what Apple has publicly provided here, you should take note:
Important. Be sure to avoid over-indexing the contents of your application or adding unrelated keywords and attributes in an attempt to improve the ranking of your results. Since iOS measures the level of interaction with users with search results, elements that users do not find useful are quickly identified and may eventually stop appearing in the results.
This is located after a new summary of search functions. And he goes on to say why:
When combining multiple search APIs, items can be indexed from multiple locations. To avoid providing users with duplicate elements in search results, you need to bind element identifiers accordingly. To make sure that the item identifiers are related, you can use the same value in the uniqueIdentifier property of search objects and in the relatedUniqueIdentifier property in the contentAttributes property of the NSUserActivity object
In other words, say that you have enabled NSUserActivity , because they are for you, because it can be applied to all users of your application, and not just to the person performing the request, it can be repeatedly populated in the same search. Therefore, based on suggestions from Apple, try not to use keywords unless you are sure, especially based on your example, where the keyword is already = uniqueIdentifier.
Personally, I have already implemented this in my application and love it, however, I use web markup, which makes batch updates almost instantly, unlike your route, where you have to actually push a new update to re-update / delete indexes.