iOS
NSUserActivity
Поиск…
Вступление
Объект 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» требуется больше работы).