Recherche…


Introduction

Un objet NSUserActivity peut être utilisé pour coordonner des événements significatifs dans une application avec le système. C'est la base du transfert entre différents appareils sous iOS et macOS. En outre, il peut également être utilisé pour améliorer l’indexation publique et augmenter ou créer des résultats de recherche Spotlight pour une application. À partir d'iOS 10, il peut également être utilisé pour coordonner les interactions entre votre application et Siri à l'aide de SiriKit.

Remarques

Types d'activité

Les types d'activité pris en charge doivent être définis dans le fichier Info.plist votre application sous la clé NSUserActivityTypes . Les activités sont liées à votre ID d'équipe de développeur, ce qui signifie que la coordination des activités est restreinte entre les applications qui ont le même ID d'équipe (par exemple, "Safari" ne peut accepter une activité de transfert de Chrome).

Devenir / Résigner l'activité en cours

Marquer une activité comme étant en cours à l’aide de becomeCurrent rend disponible pour le transfert ou l’indexation Spotlight. Une seule activité peut être en cours à la fois. Vous pouvez marquer une activité comme inactive sans l'invalider en appelant resignCurrent .

Si vous invalidate une activité, la même instance peut ne plus redevenir active.

Ne marquez pas une activité comme actuelle lorsque vous la fournissez à SiriKit .

Indexation de recherche

Les activités ne doivent pas être utilisées comme mécanisme d'indexation à usage général dans votre application. Au lieu de cela, ils ne doivent être utilisés qu'en réponse à des actions initiées par l'utilisateur. Pour indexer tout le contenu de votre application, utilisez CoreSpotlight.

Créer un NSUserActivity

Pour créer un objet NSUserActivity , votre application doit déclarer les types d'activités qu'elle prend en charge dans son fichier Info.plist . Les activités prises en charge sont définies par votre application et doivent être uniques. Une activité est définie à l'aide d'un schéma d'attribution de noms de domaine inversé (par exemple, "com.companyName.productName.activityName"). Voici à quoi peut ressembler une entrée dans votre Info.plist:

Clé Valeur
NSUserActivityTypes [Array]
- item0 com.companyName.productName.activityName01
- objet 1 com.companyName.productName.activityName02

Une fois que vous avez défini tous les types d’activité pris en charge, vous pouvez commencer à les utiliser et à les utiliser dans le code de votre application.

Pour créer un objet NSUserActivity , vous devez effectuer les opérations suivantes

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

Après cela, l'activité ci-dessus devrait être disponible pour Handoff (bien qu'un travail supplémentaire soit nécessaire pour gérer correctement le "transfert").



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow