iOS
NSUserActivity
Szukaj…
Wprowadzenie
Obiekt NSUserActivity można wykorzystać do koordynowania istotnych zdarzeń w aplikacji z systemem. Jest to podstawa do przekazania między różnymi urządzeniami z systemem iOS i macOS. Ponadto można go również wykorzystać do poprawy publicznego indeksowania i rozszerzania lub tworzenia wyników wyszukiwania Spotlight dla aplikacji. Począwszy od iOS 10, można go również używać do koordynowania interakcji między aplikacją a Siri za pomocą SiriKit.
Uwagi
Rodzaje działalności
Obsługiwane typy działań muszą być zdefiniowane w pliku Info.plist
aplikacji pod kluczem NSUserActivityTypes
. Aktywności są powiązane z Twoim identyfikatorem zespołu programisty, co oznacza, że koordynacja działań jest ograniczona między aplikacjami, które mają ten sam identyfikator zespołu (np. „Safari” nie może zaakceptować aktywności Handoff z „Chrome” lub odwrotnie).
Stawanie się / rezygnacja z bieżącej działalności
Oznaczenie aktywności jako bieżącej za pomocą becomeCurrent
powoduje, że jest ona dostępna do indeksowania Handoff lub Spotlight. Jednocześnie może być tylko jedna aktywność. Możesz oznaczyć aktywność jako nieaktywną bez unieważniania, wywołując resignCurrent
.
W przypadku invalidate
działania ta sama instancja może nie zostać ponownie zaktualizowana.
Nie oznaczaj aktywności jako bieżącej, udostępniając ją dla SiriKit .
Indeksowanie wyszukiwania
Aktywności nie należy wykorzystywać jako ogólnego mechanizmu indeksowania w aplikacji. Zamiast tego należy ich używać wyłącznie w odpowiedzi na działania inicjowane przez użytkownika. Aby zindeksować całą zawartość w swojej aplikacji, użyj CoreSpotlight.
Tworzenie NSUserActivity
Aby utworzyć obiekt NSUserActivity
, aplikacja musi zadeklarować typy obsługiwanych działań w swoim pliku Info.plist
. Obsługiwane działania są zdefiniowane przez aplikację i powinny być unikalne. Aktywność jest definiowana przy użyciu schematu nazewnictwa w stylu odwrotnej domeny (tj. „Com.companyName.productName.activityName”). Oto jak może wyglądać wpis w Twojej Info.plist:
Klucz | Wartość |
---|---|
NSUserActivityTypes | [Szyk] |
- pozycja0 | com.companyName.productName.activityName01 |
- przedmiot 1 | com.companyName.productName.activityName02 |
Po zdefiniowaniu wszystkich obsługiwanych typów działań możesz zacząć uzyskiwać do nich dostęp i używać ich w kodzie aplikacji.
Aby utworzyć obiekt NSUserActivity
, wykonaj następujące czynności
// 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];
Po tym, powyższa aktywność powinna być dostępna dla Handoff (chociaż potrzeba więcej pracy, aby poprawnie obsłużyć „Handoff”).