iOS
NSUserActivity
Zoeken…
Invoering
Een NSUserActivity-object kan worden gebruikt om belangrijke gebeurtenissen in een app met het systeem te coördineren. Het is de basis voor Handoff tussen verschillende apparaten met iOS en macOS. Bovendien kan het ook worden gebruikt om openbare indexering te verbeteren en Spotlight-zoekresultaten voor een app te verbeteren of te maken. Vanaf iOS 10 kan het ook worden gebruikt om interacties tussen uw app en Siri te coördineren met SiriKit.
Opmerkingen
Activiteitstypen
Ondersteunde activiteitstypen moeten worden gedefinieerd in het Info.plist
bestand van uw app onder de sleutel NSUserActivityTypes
. Activiteiten zijn gekoppeld aan uw ontwikkelaarsteam-ID, wat betekent dat activiteitscoördinatie beperkt is tussen apps die dezelfde Team-ID hebben (bijv. "Safari" kan een overdracht-activiteit van "Chrome" niet accepteren of vice versa).
De huidige activiteit worden / ontslag nemen
Als u een activiteit als huidig becomeCurrent
met behulp van becomeCurrent
is deze beschikbaar voor Handoff of Spotlight Indexing. Er kan slechts één activiteit tegelijk actief zijn. U kunt een activiteit als inactief markeren zonder ongeldig te maken door resignCurrent
bellen.
Als u een activiteit invalidate
, wordt hetzelfde exemplaar mogelijk niet meer actueel gemaakt.
Markeer een activiteit niet als actueel wanneer deze wordt aangeboden voor SiriKit .
Search Indexing
Activiteiten mogen niet worden gebruikt als algemeen indexeringsmechanisme in uw app. In plaats daarvan mogen ze alleen worden gebruikt als reactie op door de gebruiker geïnitieerde acties. Gebruik CoreSpotlight om alle inhoud in uw app te indexeren.
Een NSUserActivity maken
Om een NSUserActivity
object te maken, moet uw app de soorten activiteiten aangeven die het ondersteunt in het Info.plist
bestand. Ondersteunde activiteiten worden gedefinieerd door uw toepassing en moeten uniek zijn. Een activiteit wordt gedefinieerd met behulp van een naamgevingsschema voor de omgekeerde domeinstijl (dat wil zeggen "com.companyName.productName.activityName"). Dit is hoe een item in uw Info.plist eruit zou kunnen zien:
Sleutel | Waarde |
---|---|
NSUserActivityTypes | [Array] |
- item0 | com.companyName.productName.activityName01 |
- item 1 | com.companyName.productName.activityName02 |
Nadat u alle ondersteunde activiteitstypen hebt gedefinieerd, kunt u deze gaan gebruiken en gebruiken in de code van uw toepassing.
Om een NSUserActivity
object te maken, moet u het volgende doen
// 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];
Hierna moet de bovenstaande activiteit beschikbaar zijn voor Handoff (hoewel meer werk vereist is om de "Handoff" correct af te handelen).