Поиск…


Вступление

Объект NSUserActivity может использоваться для координации значимых событий в приложении с системой. Он является основой для передачи обслуживания между различными устройствами под управлением iOS и macOS. Кроме того, он также может использоваться для улучшения индексации и увеличения индексации или создания результатов поиска Spotlight для приложения. Начиная с iOS 10, он также может использоваться для координации взаимодействия между вашим приложением и Siri с использованием SiriKit.

замечания

Виды деятельности

Поддерживаемые типы активности должны быть определены в файле Info.plist вашего приложения под ключом NSUserActivityTypes . Действия привязаны к вашему идентификатору Team Developer Team, что означает, что координация действий ограничена между приложениями, имеющими один и тот же идентификатор команды (например, «Safari» не может принять действие Handoff из «Chrome» или наоборот).

Становление / списание текущей деятельности

Маркировка активности в качестве текущей с помощью функции becomeCurrent делает ее доступной для Handoff или Spotlight Indexing. Одновременно может быть только одно действие. Вы можете отметить действие как неактивное без аннулирования, вызвав resignCurrent .

Если вы invalidate действие, один и тот же экземпляр не может быть снова выполнен.

Не указывайте активность как текущую, предоставляя ее для SiriKit .

Поиск индексирования

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

Создание NSUserActivity

Чтобы создать объект NSUserActivity , ваше приложение должно объявить типы поддерживаемых им действий в файле Info.plist . Поддерживаемые действия определяются вашим приложением и должны быть уникальными. Активность определяется с использованием схемы именования стиля обратного домена (например, com.panyName.productName.activityName). Вот что может выглядеть запись в вашем Info.plist:

ключ Значение
NSUserActivityTypes [Массив]
- item0 com.companyName.productName.activityName01
- item1 com.companyName.productName.activityName02

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

Чтобы создать объект NSUserActivity вы должны сделать следующее

// Initialize the activity object and set its type from one of the ones specified in your app's plist
NSUserActivity *currentActivity = [[NSUserActivity alloc] initWithActivityType:@"com.companyName.productName.activityName01"];

// Set the title of the activity.
// This title may be displayed to the user, so make sure it is localized and human-readable
currentActivity.title = @"Current Activity";

// Configure additional properties like userInfo which will be included in the activity
currentActivity.userInfo = @{@"informationKey" : @"value"};

// Configure the activity so the system knows what may be done with it
// It is important that you only set YES to tasks that your application supports
// In this example, we will only enable the activity for use with Handoff
[currentActivity setEligibleForHandoff:YES];
[currentActivity setEligibleForSearch:NO]; // Defaults to NO
[currentActivity setEligibleForPublicIndexing:NO]; // Defaults to NO

// Set this activity as the current user activity
// Only one activity may be current at a time on a device. Calling this method invalidates any other current activities.
[currentActivity becomeCurrent];

После этого вышеуказанная деятельность должна быть доступна для передачи обслуживания (хотя для правильной обработки «Handoff» требуется больше работы).



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow