Wyszukiwanie za pomocą funkcji NSUserActivity na platformie Xamarin.iOS

NSUserActivity wprowadzono w systemie iOS 8 i służy do dostarczania danych do przekazywania. Umożliwia tworzenie działań w określonych częściach aplikacji, które następnie można przekazać do innego wystąpienia aplikacji uruchomionej na innym urządzeniu z systemem iOS. Urządzenie odbierające może następnie kontynuować działanie uruchomione na poprzednim urządzeniu, pobierając w prawo miejsce, w którym użytkownik odszedł. Aby uzyskać więcej informacji na temat korzystania z funkcji Handoff, zobacz dokumentację Wprowadzenie do przekazywania .

Nowy w systemie iOS 9 NSUserActivity można indeksować (zarówno publicznie, jak i prywatnie) oraz wyszukiwać w funkcji Spotlight Search i Safari. Oznaczając NSUserActivity jako możliwe do przeszukiwania i dodając metadane z możliwością indeksowania, działanie można wyświetlać w wynikach wyszukiwania na urządzeniu z systemem iOS.

The App History overview

Jeśli użytkownik wybierze wynik wyszukiwania, który należy do działania z aplikacji, zostanie uruchomiona aplikacja, a działanie opisane przez NSUserActivity element zostanie uruchomione ponownie i wyświetlone użytkownikowi.

Następujące właściwości NSUserActivity są używane do obsługi wyszukiwania aplikacji:

  • EligibleForHandoff — Jeśli trueto działanie może być używane w operacji Przekazywania.
  • EligibleForSearch — Jeśli trueto działanie zostanie dodane do indeksu urządzenia i przedstawione w wynikach wyszukiwania.
  • EligibleForPublicIndexing — Jeśli trueto działanie zostanie dodane do indeksu opartego na chmurze firmy Apple i zostanie wyświetlone użytkownikom (za pośrednictwem wyszukiwania), którzy nie zainstalowali jeszcze aplikacji na urządzeniu z systemem iOS. Aby uzyskać więcej informacji, zobacz sekcję Indeksowanie wyszukiwania publicznego poniżej.
  • Title — zawiera tytuł działania i jest wyświetlany w wynikach wyszukiwania. Użytkownicy mogą również wyszukiwać tekst samego tytułu.
  • Keywords — jest tablicą ciągów używanych do opisywania działania, które zostaną zindeksowane i wprowadzone do wyszukiwania przez użytkownika końcowego.
  • ContentAttributeSet — służy CSSearchableItemAttributeSet do dalszego opisywania działania w szczegółach i udostępniania rozbudowanej zawartości w wynikach wyszukiwania.
  • ExpirationDate — Jeśli chcesz, aby działanie było wyświetlane tylko do danej daty, możesz podać w tym miejscu datę.
  • WebpageURL — Jeśli działanie można wyświetlić w Internecie lub jeśli aplikacja obsługuje linki głębokie przeglądarki Safari, możesz ustawić link do odwiedzenia tutaj.

NSUserActivity — szybki start

Postępuj zgodnie z tymi instrukcjami, aby zaimplementować wyszukiwanie NSUserActivity w aplikacji:

Istnieje kilka dodatkowych korzyści związanych z korzystaniem z NSUserActivity funkcji wyszukiwania zawartości.

Tworzenie identyfikatorów typów działań

Przed utworzeniem działania wyszukiwania należy utworzyć identyfikator typu działania, aby go zidentyfikować. Identyfikator typu działania to krótki ciąg dodany do NSUserActivityTypes tablicy pliku Info.plist aplikacji używany do unikatowego identyfikowania danego typu działania użytkownika. W tablicy będzie znajdować się jeden wpis dla każdego działania obsługiwanego przez aplikację i uwidacznianego w wyszukiwaniu aplikacji.

Firma Apple sugeruje użycie odwrotnej notacji w stylu DNS dla identyfikatora typu działania, aby uniknąć kolizji. Na przykład: com.company-name.appname.activity w przypadku określonych działań opartych na aplikacji lub com.company-name.activity działań, które mogą być uruchamiane w wielu aplikacjach.

Identyfikator typu działania jest używany podczas tworzenia NSUserActivity wystąpienia do identyfikowania typu działania. Gdy działanie będzie kontynuowane w wyniku naciśnięcia wyniku wyszukiwania przez użytkownika, typ działania (wraz z identyfikatorem zespołu aplikacji) określa, która aplikacja ma być uruchamiana, aby kontynuować działanie.

Aby utworzyć wymagane identyfikatory typów działań do obsługi tego zachowania, zmodyfikuj plik Info.plist i przejdź do widoku Źródło . NSUserActivityTypes Dodaj klucz i utwórz identyfikatory w następującym formacie:

The NSUserActivityTypes key and required identifiers in the plist editor

W powyższym przykładzie utworzyliśmy jeden nowy identyfikator typu działania dla działania wyszukiwania (com.xamarin.platform). Podczas tworzenia własnych aplikacji zastąp zawartość NSUserActivityTypes tablicy identyfikatorami typów działań specyficznymi dla działań, które obsługuje aplikacja.

Tworzenie działania

Poniżej przedstawiono przykład tworzenia działania dla wyszukiwania hostowanego na urządzeniu:

// Create App Search Activity
var activity = new NSUserActivity ("com.xamarin.platform");

// Define details
var info = new NSMutableDictionary ();
info.Add(new NSString("link"),new NSString("http://xamarin.com/platform"));

// Populate Activity
activity.Title = "The Xamarin Platform";
activity.UserInfo = info;

// Add App Search ability
activity.EligibleForSearch = true;
activity.BecomeCurrent();

Możemy dodać dalsze szczegóły, ustawiając właściwość naszego NSUserActivity obiektu ContentAttributeSet w następujący sposób:

Addition Search Details overview

Za pomocą elementu ContentAttributeSet można tworzyć zaawansowane wyniki wyszukiwania, które zachęcają użytkownika końcowego do interakcji z nimi.

Odpowiadanie na działanie

Aby odpowiedzieć użytkownikowi na naciśnięcie wyniku wyszukiwania (NSUserActivity) dla naszej aplikacji, zmodyfikujplik AppDelegate.cs i przesłoń metodęContinueUserActivity. Na przykład:

public override bool ContinueUserActivity (UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler)
{

    // Take action based on the activity type
    switch (userActivity.ActivityType) {
    case "com.xamarin.platform":
        // Restore the state of the app here...
        break;
    }

    return true;
}

Należy pamiętać, że jest to ta sama metoda zastąpienia używana do odpowiadania na żądania przekazywania. Teraz, jeśli użytkownik kliknie link z naszej aplikacji w wynikach wyszukiwania w centrum uwagi, nasza aplikacja zostanie przeniesiona na pierwszy plan (lub zostanie uruchomiona, jeśli jeszcze nie jest uruchomiona), a zawartość, nawigacja lub funkcja reprezentowana przez ten link będą wyświetlane:

Restore Previous State from Search

Indeksowanie wyszukiwania publicznego

Jak pokazano powyżej, system iOS 9 ułatwia zapewnienie dostępu wyszukiwania do zawartości i funkcji aplikacji, które użytkownik już odkrył i używa na danym urządzeniu z systemem iOS. Dzięki indeksowaniu publicznemu system iOS 9 zapewnia użytkownikom, którzy jeszcze nie odkryli zawartości lub funkcji (lub którzy nawet nie zainstalowali aplikacji), aby uzyskać te wyniki w wyszukiwaniu.

Indeksowanie publiczne działa w następujący sposób:

  1. Podczas tworzenia działania dla aplikacji możesz oznaczyć ją jako publiczną.
  2. Działania publiczne są wysyłane do firmy Apple i indeksowane w chmurze.
  3. W miarę jak coraz więcej użytkowników korzysta z aplikacji na urządzeniu i korzysta z określonej funkcji lub zawartości reprezentowanej przez działanie, zwiększa się rangą.
  4. Popularne wyniki publiczne będą dostępne dla innych użytkowników, nawet jeśli nie mają zainstalowanej aplikacji.
  5. Te publiczne wyniki będą wyświetlane w funkcji Wyszukiwania w centrum uwagi i przeglądarce Safari (jeśli działanie zawiera adres URL).

Możemy podjąć utworzone powyżej działanie wyszukiwania prywatnego i rozszerzyć je tak, aby było publiczne:

// Create App Search Activity
var activity = new NSUserActivity ("com.xamarin.platform");

// Define details
var info = new NSMutableDictionary ();
info.Add(new NSString("link"),new NSString("http://xamarin.com/platform"));

// Populate Activity
activity.Title = "The Xamarin Platform";
activity.UserInfo = info;

// Add App Search ability
activity.EligibleForSearch = true;
activity.EligibleForPublicIndexing = true;
activity.BecomeCurrent();

Tylko dlatego, że działanie zostało ustawione na potrzeby indeksowania publicznego przez ustawienie EligibleForPublicIndexing = true, nie oznacza to, że zostanie ono automatycznie dodane do indeksu chmury publicznej firmy Apple. Najpierw należy spełnić następujące warunki:

  1. Musi ona być wyświetlana w wynikach wyszukiwania i wybierana przez wielu użytkowników. Wyniki pozostają prywatne do momentu spełnienia progu zakontraktowań działań.
  2. Aprowizowanie aplikacji uniemożliwia indeksowanie i upublicznianie wszystkich danych specyficznych dla użytkownika.

Dodatkowe korzyści

Dzięki wdrożeniu funkcji wyszukiwania aplikacji w NSUserActivity aplikacji uzyskasz również następujące funkcje:

  • Przekazywanie — ponieważ wyszukiwanie aplikacji udostępnia zawartość, nawigację i/lub funkcje przy użyciu tego samego mechanizmu, co przekazywanie (NSUserActivity), możesz łatwo zezwolić użytkownikom aplikacji na rozpoczęcie działania na jednym urządzeniu i kontynuować je na innym urządzeniu.
  • Sugestie Siri — wraz ze standardowymi sugestiami, które sugestie Siri zwykle tworzą, aktywne z aplikacji mogą być automatycznie sugerowane.
  • Siri Smart Reminders — użytkownicy będą mogli poprosić Siri o przypomnienie im o działaniach z aplikacji.