NSUserActivity и CoreSpotlight одновременно

Я планирую одновременно использовать в своем приложении NSUserActivity и CoreSpotlight, но почему-то не могу заставить его работать так, как задумано.

Сейчас работаю в интернет-магазине розничной торговли.

Потребуются следующие шаги:

Шаг 1. Каждый продукт, который пользователь посетил в моем приложении для iPhone, будет идентифицирован с помощью объекта NSUserActivity, который будет отображаться в API поиска. Кроме того, он общедоступен и имеет уменьшенное изображение, заголовок, описание и дату истечения срока действия.

Шаг 2. Пользователь выполняет поиск в поиске iPhone, и продукт там появляется. Он также будет отображаться в приложении, если пользователь нажмет на него. Пока все легко достижимо.

Шаг 3. Пользователь имеет право "сохранить" этот продукт, чтобы никто другой не смог получить его раньше него. Итак, как только продукт сохранен, я хотел бы изменить детали NSUserActivity, чтобы он мог отображать в описании продукт, сохраненный. Насколько я знаю, я не могу этого сделать, так как для этого нет API.

В идеале я хотел бы изменить описание и изображение, чтобы пользователь знал, что продукт теперь принадлежит ему, поэтому я бы сделал NSUserActivity закрытым и изменил его свойства, но я не могу найти способ.

С другой стороны, я мог бы использовать NSUserActivity для обработки общедоступных продуктов, а CoreSpotlight — для сохраненных, но в этом случае приложение будет отображать один и тот же продукт дважды. Тот, что сохранен и приватен, и тот, что публичен. Чего мне хотелось бы избежать, так как я хочу, чтобы вы видели один и тот же продукт только один раз, в данном случае тот, который вы сохранили и он ваш.

Есть ли способ добиться этого?


person RGML    schedule 05.08.2015    source источник
comment
Рассмотрите возможность добавления того, что вы пробовали, что не сработало и т. д.   -  person shortstuffsushi    schedule 12.08.2015
comment
Что означает The user has the right to 'save' that product, so nobody else can get it before he does.? Должно ли это вывести публичный листинг из индекса Apple? Я не уверен, что предлагают эту способность в настоящее время.   -  person shortstuffsushi    schedule 12.08.2015
comment
Почему вы не можете изменить действие? Разве это не их единственная цель - генерировать результаты на основе предыдущих предварительно сформированных действий на стороне клиента. Просто переиндексируйте рассматриваемый элемент. Вы должны индексировать их по какому-то идентификатору, будь то уникальный или доменный. В некоторых случаях вы можете просто удалить его, а затем переиндексировать. В любом случае, это не так уж сложно, какой путь вы выберете. Если вы можете извлечь_ предмет, вы уже знаете, как его идентифицировать, так что просто промойте и повторите. Что касается приватности, то вы просто идете против намерений API. Похоже, ты не уверен, чего хочешь   -  person soulshined    schedule 13.08.2015


Ответы (1)


Предотвратить дублирование элементов довольно просто. Все, что вам нужно сделать, это указать одно и то же значение в relatedUniqueIdentifier (NSUserActivity) и uniqueIdentifier (CSSearchableItem).
Это также повысит ваш рейтинг.

См. документацию. для получения подробной информации.

person dogsgod    schedule 08.08.2016