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”).



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow