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.
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ślitrue
to działanie może być używane w operacji Przekazywania.EligibleForSearch
— Jeślitrue
to działanie zostanie dodane do indeksu urządzenia i przedstawione w wynikach wyszukiwania.EligibleForPublicIndexing
— Jeślitrue
to 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żyCSSearchableItemAttributeSet
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:
- Tworzenie identyfikatorów typów działań
- Tworzenie działania
- Odpowiadanie na działanie
- Indeksowanie wyszukiwania publicznego
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:
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:
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:
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:
- Podczas tworzenia działania dla aplikacji możesz oznaczyć ją jako publiczną.
- Działania publiczne są wysyłane do firmy Apple i indeksowane w chmurze.
- 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ą.
- Popularne wyniki publiczne będą dostępne dla innych użytkowników, nawet jeśli nie mają zainstalowanej aplikacji.
- 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:
- 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ń.
- 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.