Sök…


Introduktion

Ett NSUserActivity-objekt kan användas för att koordinera viktiga händelser i en app med systemet. Det är grunden för Handoff mellan olika enheter som kör iOS och macOS. Dessutom kan det också användas för att förbättra public indexering och förstärka eller skapa Spotlight-sökresultat för en app. Från iOS 10 kan den också användas för att koordinera interaktioner mellan din app och Siri med SiriKit.

Anmärkningar

Aktivitetstyper

Aktivitetstyper som stöds måste definieras i appens Info.plist fil under NSUserActivityTypes tangenten. Aktiviteter är knutna till ditt utvecklar Team-ID, vilket innebär att aktivitetskoordinering är begränsad mellan appar som har samma Team-ID (t.ex. "Safari" kunde inte acceptera en Handoff-aktivitet från "Chrome" eller vice versa).

Bli / avgå den aktuella aktiviteten

Att markera en aktivitet som aktuell med hjälp av becomeCurrent gör den tillgänglig för Handoff eller Spotlight Indexing. Endast en aktivitet kan vara aktuell åt gången. Du kan markera en aktivitet som inaktiv utan att ogiltigförklaras genom att ringa resignCurrent .

Om du invalidate en aktivitet kanske inte samma instans blir aktuell igen.

Markera inte en aktivitet som aktuell när du tillhandahåller den till SiriKit .

Sök indexering

Aktiviteter får inte användas som en generell indexeringsmekanism i din app. Istället bör de bara användas som svar på användarinitierade åtgärder. Om du vill indexera allt innehåll i din app använder du CoreSpotlight.

Skapa en NSUserActivity

För att skapa ett NSUserActivity objekt måste din app ange vilka typer av aktiviteter den stöder i sin Info.plist fil. Aktiviteter som stöds definieras av din ansökan och bör vara unika. En aktivitet definieras med ett namnnamnsschema för omvänd domän (dvs. "com.companyName.productName.activityName"). Så här kan en post i din Info.plist se ut:

Nyckel Värde
NSUserActivityTypes [Array]
- artikel0 com.companyName.productName.activityName01
- artikel1 com.companyName.productName.activityName02

När du har definierat alla aktivitetstyper som stöds kan du börja komma åt och använda dem i programmets kod.

För att skapa ett NSUserActivity objekt måste du göra följande

// 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];

Efter detta bör aktiviteten ovan vara tillgänglig för Handoff (även om mer arbete krävs för att ordentligt hantera "Handoff").



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow