Wprowadzenie do proaktywnych sugestii na platformie Xamarin.iOS
W tym artykule pokazano, jak używać proaktywnych sugestii w aplikacji Xamarin.iOS, aby zwiększyć zaangażowanie, umożliwiając systemowi aktywne prezentowanie przydatnych informacji automatycznie użytkownikowi.
Nowość w systemie iOS 10, proaktywne sugestie przedstawiają sposoby na kontakt użytkowników z aplikacją platformy Xamarin.iOS dzięki proaktywnym prezentowaniu przydatnych informacji automatycznie użytkownikowi w odpowiednim czasie.
System iOS 10 przedstawia nowe sposoby angażowania się w aplikację, umożliwiając systemowi proaktywne prezentowanie przydatnych informacji automatycznie użytkownikowi w odpowiednim czasie. Podobnie jak system iOS 9 zapewniał możliwość dodawania głębokiego wyszukiwania do aplikacji przy użyciu funkcji Spotlight, przekazywania i sugestii Siri (zobacz nowe interfejsy API wyszukiwania) w systemie iOS 10 aplikacja może uwidocznić funkcje, które mogą być prezentowane użytkownikowi przez system z poziomu następujących lokalizacji:
- Przełącznik aplikacji
- Ekran blokady
- Carplay
- Maps
- Interakcje Siri
- Sugestie quicktype
Aplikacja udostępnia tę funkcję systemowi przy użyciu kolekcji technologii, takich jak NSUserActivity
, znaczniki internetowe, Core Spotlight, MapKit, Odtwarzacz multimedialny i UIKit. Ponadto dzięki udostępnieniu proaktywnej obsługi sugestii dla aplikacji jest coraz głębsza integracja Siri bezpłatnie.
Sugestie oparte na lokalizacji
Nowa klasa dla systemu iOS 10 zawiera MapItem
właściwość, NSUserActivity
która umożliwia deweloperowi udostępnianie informacji o lokalizacji, które mogą być używane w innych kontekstach. Jeśli na przykład aplikacja wyświetla recenzje restauracji, deweloper może ustawić MapItem
właściwość na lokalizację restauracji, którą użytkownik wyświetla w aplikacji. Jeśli użytkownik przełączy się do aplikacji Mapy, lokalizacja restauracji będzie automatycznie dostępna.
Jeśli aplikacja obsługuje wyszukiwanie aplikacji, może użyć nowych składników CSSearchableItemAttributesSet
adresu klasy, aby określić lokalizacje, które użytkownik może chcieć odwiedzić. MapItem
Ustawiając właściwość, pozostałe właściwości są wypełniane automatycznie.
Oprócz ustawienia Latitude
właściwości i Longitude
składnika adresu zaleca się, aby aplikacja dostarczała NamedLocation
właściwości i PhoneNumbers
, aby Siri mogła zainicjować wywołanie lokalizacji.
Sugestie oparte na znacznikach internetowych
System iOS 9 dodał możliwość uwzględnienia znaczników danych strukturalnych w witrynie internetowej, która wzbogaca zawartość widoczną dla użytkowników w wynikach wyszukiwania Spotlight i Safari (zobacz Wyszukiwanie za pomocą znaczników internetowych). System iOS 10 dodaje możliwość dołączania znaczników opartych na lokalizacji (takich jak PostalAddress zgodnie z definicją Schema.org) w celu dalszego ulepszania środowiska użytkownika. Jeśli na przykład użytkownicy wyświetlają lokalizację oznaczoną na stronie internetowej, system może sugerować tę samą lokalizację po otwarciu Mapy.
Sugestie oparte na tekście
Zestaw UIKit został rozszerzony w systemie iOS 10, aby uwzględnić właściwość TextContentType klasy UITextInputTraits w celu określenia semantycznego znaczenia zawartości w obszarze tekstowym. Dzięki tym informacjom system zazwyczaj może automatycznie wybierać odpowiedni typ klawiatury, ulepszać sugestie autokorekty i aktywnie integrować informacje z innych aplikacji i witryn internetowych.
Jeśli na przykład użytkownik wprowadza tekst do pola tekstowego oznaczonego , UITextContentType.FullStreetAddress
system może sugerować automatyczne wypełnianie pola lokalizacją, w ramach którego ostatnio wyświetlał się użytkownik.
Sugestie oparte na mediach
Jeśli aplikacja odtwarza multimedia przy użyciu interfejsu API MPPlayableContentManager , system iOS 10 umożliwia użytkownikom wyświetlanie grafiki albumu i odtwarzanie multimediów za pośrednictwem aplikacji na ekranie blokady.
Kontekstowe przypomnienia Siri
Umożliwia użytkownikowi szybkie przypomnienie o wyświetlaniu zawartości, która jest obecnie wyświetlana w aplikacji w późniejszym terminie. Jeśli na przykład przeglądali recenzję restauracji w aplikacji, mogą wywołać Siri i powiedzieć : "Przypomnij mi o tym, gdy dostanę się do domu". Siri wygeneruje przypomnienie za pomocą linku do przeglądu w aplikacji.
Sugestie oparte na kontaktach
Umożliwia kontaktom aplikacji (i powiązanym informacjom kontaktowym) wyświetlanie w aplikacji Kontakt na urządzeniu z systemem iOS wraz ze wszystkimi kontaktami użytkowników przechowywanymi w systemie.
Sugestie oparte na udostępnianiu przejazdów
Jeśli aplikacja do udostępniania przejazdów używa interfejsu API MKDirectionsRequest , system iOS 10 przedstawi go jako opcję w przełączniku aplikacji w czasie, gdy użytkownik prawdopodobnie będzie chciał jeździć. Aplikacja musi być również zarejestrowana jako aplikacja do udostępniania przejazdów MKDirectionsModeRideShare
, określając klucz MKDirectionsApplicationSupportedModes w pliku Info.plist
.
Jeśli aplikacja obsługuje tylko udostępnianie przejazdów, sugestia systemowa rozpocznie się od "Pobierz przejazd do...", jeśli są obsługiwane inne typy kierunku routingu (takie jak Spacer lub Rower), system użyje polecenia "Pobierz wskazówki do..."
Ważne
Obiekt MKMapItem, który otrzymuje aplikacja, może nie zawierać informacji o długości geograficznej i szerokości geograficznej i będzie wymagał geokodowania.
Implementowanie proaktywnych sugestii
Dodanie obsługi proaktywnych sugestii do aplikacji platformy Xamarin.iOS jest zwykle tak proste, jak zaimplementowanie kilku interfejsów API lub rozszerzenie kilku interfejsów API, które aplikacja może już implementować.
Proaktywne sugestie działają z aplikacjami na trzy główne sposoby:
NSUserActivity
a Schema.org -NSUserActivity
pomaga systemowi zrozumieć, jakie informacje aktualnie pracuje użytkownik na ekranie. Schema.org dodaje podobne możliwości do stron internetowych.- Sugestie dotyczące lokalizacji — jeśli aplikacja oferuje lub korzysta z informacji opartych na lokalizacji, to rozszerzenie interfejsu API oferuje nowe sposoby udostępniania tych informacji w aplikacjach.
- Sugestie dotyczące aplikacji multimediów — system może podwyższyć poziom aplikacji i jej zawartości multimedialnej na podstawie kontekstu interakcji użytkownika z urządzeniem z systemem iOS.
Funkcja ta jest obsługiwana w aplikacji, implementując następujące elementy:
- -
NSUserActivity
Przekazywanie zostało dodane w systemie iOS 8 w celu obsługi przekazywania, które umożliwia deweloperowi rozpoczęcie działania na jednym urządzeniu, a następnie kontynuowanie go na innym (zobacz Wprowadzenie do przekazywania). - Funkcja Wyszukiwania w centrum uwagi — system iOS 9 dodał możliwość promowania zawartości aplikacji z poziomu wyników wyszukiwania W centrum uwagi przy użyciu funkcji
NSUserActivity
(zobacz Wyszukiwanie w centrum uwagi Core). - Kontekstowe przypomnienia Siri — w systemie iOS 10 został rozszerzony,
NSUserActivity
aby umożliwić Siri szybkie przypomnienie o wyświetlaniu zawartości, która jest obecnie wyświetlana w aplikacji w późniejszym terminie. - Sugestie dotyczące lokalizacji — system iOS 10 rozszerza
NSUserActivity
możliwości przechwytywania lokalizacji wyświetlanych wewnątrz aplikacji i promowania ich w wielu miejscach w całym systemie. - Kontekstowe żądania -
NSUserActivity
Siri zawierają kontekst informacji przedstawionych w aplikacji siri, dzięki czemu użytkownik może uzyskać wskazówki lub umieścić wywołanie funkcji Siri z poziomu aplikacji. - Interakcje kontaktowe — nowość w systemie iOS 10 umożliwia
NSUserActivity
podwyższenie poziomu aplikacji komunikacyjnych z karty kontaktowej (w aplikacji Kontakty) jako alternatywnej metody komunikacji.
Wszystkie te funkcje mają jedną wspólną cechę, wszystkie są używane NSUserActivity
w jednej lub innej formie, aby zapewnić ich funkcjonalność.
NSUserActivity
Jak wspomniano powyżej, pomaga systemowi zrozumieć, NSUserActivity
jakie informacje użytkownik aktualnie pracuje na ekranie. NSUserActivity
to lekki mechanizm buforowania stanu umożliwiający przechwytywanie aktywności użytkownika podczas przechodzenia przez aplikację. Na przykład patrząc na aplikację restauracji:
W przypadku następujących interakcji:
- Gdy użytkownik współpracuje z aplikacją,
NSUserActivity
zostanie utworzony w celu ponownego utworzenia stanu aplikacji później. - Jeśli użytkownik wyszukuje restaurację, następuje ten sam wzorzec tworzenia działań.
- I znowu, gdy użytkownik wyświetli wynik. W tym ostatnim przypadku użytkownik wyświetla lokalizację i w systemie iOS 10 system jest bardziej świadomy niektórych pojęć (takich jak interakcja z lokalizacją lub komunikacją).
Przyjrzyj się bliżej ostatniego ekranu:
W tym miejscu aplikacja tworzy NSUserActivity
obiekt i została wypełniona informacjami, aby ponownie utworzyć stan później. Aplikacja zawierała również pewne metadane, takie jak nazwa i adres lokalizacji. Po utworzeniu tego działania aplikacja informuje system iOS, że reprezentuje bieżący stan użytkownika.
Następnie aplikacja decyduje, czy działanie zostanie anonsowane za pośrednictwem powietrza dla przekazywania, zapisane jako tymczasowa wartość sugestii dotyczących lokalizacji lub dodane do indeksu W centrum uwagi na urządzeniu do wyświetlania w wynikach wyszukiwania.
Aby uzyskać więcej informacji na temat wyszukiwania Handoff i Spotlight, zobacz przewodniki Wprowadzenie do przekazywania i interfejsów API wyszukiwania dla systemu iOS 9.
Tworzenie działania
Przed utworzeniem działania należy utworzyć identyfikator typu działania, aby go zidentyfikować. Identyfikator typu działania to krótki ciąg dodany do NSUserActivityTypes
tablicy pliku aplikacji Info.plist
używanego 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. Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą tworzenia identyfikatorów typów działań.
Spójrz na przykład działania:
// Create App 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;
// Enable capabilities
activity.EligibleForSearch = true;
activity.EligibleForHandoff = true;
activity.EligibleForPublicIndexing = true;
// Inform system of Activity
activity.BecomeCurrent();
Nowe działanie jest tworzone przy użyciu identyfikatora typu działania. Następnie niektóre metadane definiujące działanie są tworzone, aby można było przywrócić ten stan w późniejszym terminie. Następnie działanie otrzymuje znaczący tytuł i jest dołączane do informacji o użytkowniku. Na koniec niektóre możliwości są włączone, a działanie jest wysyłane do systemu.
Powyższy kod można dodatkowo ulepszyć w celu uwzględnienia metadanych, które zapewniają kontekst działania, wprowadzając następujące zmiany:
...
// Provide context
var attributes = new CSSearchableItemAttributeSet ("com.xamarin.location");
attributes.ThumbnailUrl = myThumbnailURL;
attributes.Keywords = new string [] { "software", "mobile", "language" };
activity.ContentAttributeSet = attributes;
// Inform system of Activity
activity.BecomeCurrent();
Jeśli deweloper ma witrynę internetową, która może wyświetlać te same informacje co aplikacja, aplikacja może zawierać adres URL, a zawartość może być wyświetlana na innych urządzeniach, na których nie zainstalowano aplikacji (za pośrednictwem przekazywania):
// Restore on the web
activity.WebPageUrl = new NSUrl("http://xamarin.com/platform");
Przywracanie działania
Aby odpowiedzieć użytkownikowi na naciśnięcie wyniku wyszukiwania (NSUserActivity
) dla aplikacji, zmodyfikuj plik 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;
}
Deweloper musi upewnić się, że jest to ten sam identyfikator typu działania (com.xamarin.platform
), co utworzone powyżej działanie. Aplikacja używa informacji przechowywanych w obiekcie NSUserActivity
, aby przywrócić stan z powrotem do miejsca, w którym użytkownik opuścił.
Zalety tworzenia działania
Po przedstawionej powyżej minimalnej ilości kodu aplikacja może teraz korzystać z trzech nowych funkcji systemu iOS 10:
- Handoff
- Wyszukiwanie w centrum uwagi
- Kontekstowe przypomnienia Siri
W poniższej sekcji przedstawiono włączanie dwóch innych nowych funkcji systemu iOS 10:
- Sugestie dotyczące lokalizacji
- Kontekstowe żądania Siri
Sugestie oparte na lokalizacji
Zapoznaj się z przykładem powyższej aplikacji wyszukiwania restauracji. Jeśli zaimplementowano NSUserActivity
i poprawnie wypełniono wszystkie metadane i atrybuty, użytkownik będzie mógł wykonać następujące czynności:
- Znajdź restaurację w aplikacji, na której chcieliby spotkać się z przyjacielem.
- Gdy użytkownik odchodzi od aplikacji przy użyciu przełącznika aplikacji wielozadaniowych, system automatycznie wyświetli sugestię (w dolnej części ekranu), aby uzyskać wskazówki do restauracji przy użyciu ulubionej aplikacji nawigacji.
- Jeśli użytkownik przełączy się do aplikacji Wiadomości i zacznie wpisywać " Spotkajmy się pod adresem", klawiatura QuickType automatycznie sugeruje wklejanie w adresie restauracji.
- Jeśli użytkownik przełączy się do aplikacji Mapy, adres restauracji zostanie automatycznie sugerowany jako miejsce docelowe.
- Działa to nawet w przypadku aplikacji innych firm (obsługujących
NSUserActivity
usługę ), dzięki czemu użytkownik może przełączyć się na aplikację do udostępniania przejazdów, a adres restauracji jest automatycznie sugerowany jako miejsce docelowe. - Zapewnia również kontekst Siri, dzięki czemu użytkownik może wywołać Siri w aplikacji restauracji i zapytać "Get directions..." (Pobierz wskazówki), a Siri będzie dostarczać wskazówki dla restauracji wyświetlanej przez użytkownika.
Wszystkie powyższe funkcje mają jedną wspólną cechę, wszystkie wskazują, skąd pochodzi sugestia. W przypadku powyższego przykładu jest to fikcyjna aplikacja do przeglądu restauracji.
System iOS 10 został rozszerzony w celu umożliwienia tej funkcji dla aplikacji za pomocą kilku drobnych modyfikacji i dodatków do istniejących struktur:
NSUserActivity
Zawiera dodatkowe pola do przechwytywania informacji o lokalizacji, które są wyświetlane w aplikacji.- Wprowadzono kilka dodatków do bibliotek MapKit i CoreSpotlight w celu przechwycenia lokalizacji.
- Funkcje rozpoznawania lokalizacji zostały dodane do Siri, Mapy, klawiatur, wielozadaniowości i innych aplikacji w systemie.
Aby zaimplementować sugestie oparte na lokalizacji, zacznij od tego samego kodu działania przedstawionego powyżej:
// Create App 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;
// Enable capabilities
activity.EligibleForSearch = true;
activity.EligibleForHandoff = true;
activity.EligibleForPublicIndexing = true;
// Provide context
var attributes = new CSSearchableItemAttributeSet ("com.xamarin.location");
attributes.ThumbnailUrl = myThumbnailURL;
attributes.Keywords = new string [] { "software", "mobile", "language" };
activity.ContentAttributeSet = attributes;
// Restore on the web
activity.WebPageUrl = new NSUrl("http://xamarin.com/platform");
// Inform system of Activity
activity.BecomeCurrent();
Jeśli aplikacja korzysta z zestawu MapKit, wystarczy dodać bieżącą mapę MKMapItem
do działania:
// Save MKMapItem location
activity.MapItem = myMapItem;
Jeśli aplikacja nie korzysta z zestawu MapKit, może przyjąć wyszukiwanie aplikacji i określić następujące nowe atrybuty lokalizacji:
// Provide context
var attributes = new CSSearchableItemAttributeSet ("com.xamarin.location");
...
attributes.NamedLocation = "Apple Inc.";
attributes.SubThoroughfare = "1";
attributes.Thoroughfare = "Infinite Loop";
attributes.City = "Cupertino";
attributes.StateOrProvince = "CA";
attributes.Country = "United States";
attributes.Latitude = 37.33072;
attributes.Longitude = 122.029674;
attributes.PhoneNumbers = new string[]{"(800) 275-2273"};
attributes.SupportsPhoneCalls = true;
attributes.SupportsNavigation = true;
Przyjrzyj się szczegółowo powyższej kodzie. Najpierw nazwa lokalizacji jest wymagana w każdym wystąpieniu:
attributes.NamedLocation = "Apple Inc.";
Następnie opis lokalizacji na podstawie tekstu jest wymagany dla wystąpień opartych na tekście (takich jak klawiatura QuickType):
attributes.SubThoroughfare = "1";
attributes.Thoroughfare = "Infinite Loop";
attributes.City = "Cupertino";
attributes.StateOrProvince = "CA";
attributes.Country = "United States";
Szerokość geograficzna i długość geograficzna są opcjonalne, ale upewnij się, że użytkownik jest kierowany do dokładnej lokalizacji, do której aplikacja chce je wysłać, dlatego powinna zostać uwzględniona:
attributes.Latitude = 37.33072;
attributes.Longitude = 122.029674;
Ustawiając numery telefonów, aplikacja może uzyskać dostęp do Siri, aby użytkownik mógł wywołać Siri z aplikacji, mówiąc coś takiego: "Zadzwoń w to miejsce":
attributes.PhoneNumbers = new string[]{"(800) 275-2273"};
Na koniec aplikacja może wskazać, czy wystąpienie jest odpowiednie do nawigacji i połączeń telefonicznych:
attributes.SupportsPhoneCalls = true;
attributes.SupportsNavigation = true;
Implementowanie interakcji z kontaktami
Nowe w systemie iOS 10 aplikacje komunikacyjne są głęboko zintegrowane z aplikacją Kontakty z karty kontaktowej. W przypadku aplikacji, które zaimplementowały interakcje kontaktowe, użytkownik może dodać informacje o danej aplikacji do określonych osób w kontaktach. Jeśli na przykład trafią przycisk szybkiej akcji w górnej części karty w celu wysłania wiadomości, dołączona aplikacja zostanie wyświetlona jako opcja wysłania wiadomości.
Jeśli wybrano aplikację innej firmy, można ją zapamiętać i przedstawić jako domyślny sposób na przesłanie danej osoby przy następnym skontaktowaniu się z nim.
Interakcje kontaktowe są implementowane w aplikacji przy użyciu i NSUserActivity
nowej strukturze Intents wprowadzonej w systemie iOS 10. Aby uzyskać więcej informacji na temat pracy z intencjami, zapoznaj się z naszymi przewodnikami Understanding SiriKit Concepts and Implement SiriKit (Omówienie pojęć sirikitu i implementowania zestawów SiriKit ).
Donating Interactions
Zobacz, jak aplikacja może przekazać interakcje:
Aplikacja tworzy obiekt zawierający intencję INInteraction
(INIntent
), uczestników i metadanych. Intencja reprezentuje akcję użytkownika, taką jak wykonywanie wywołania wideo lub wysyłanie wiadomości SMS. Uczestnicy obejmują osoby odbierające komunikację. Metadane definiują dodatkowe informacje, takie jak pomyślne wysłanie komunikatu itp.
Deweloper nigdy nie tworzy bezpośrednio wystąpienia klasy INIntent
lub INIntentResponse
, będzie używać jednej z określonych klas podrzędnych (na podstawie zadania, które aplikacja wykonuje w imieniu użytkownika), które dziedziczą z tych klas nadrzędnych. Na przykład INSendMessageIntent
i INSendMessageIntentResponse
do wysyłania wiadomości SMS.
Po pełnym wypełnieniu interakcji wywołaj metodę DonateInteraction
, aby poinformować system, że interakcja jest dostępna do użycia.
Gdy użytkownik wchodzi w interakcję z aplikacją z karty Kontakt, interakcja zostanie dołączona NSUserActivity
do elementu , który jest następnie używany do uruchamiania aplikacji:
Zapoznaj się z poniższym przykładem intencji wyślij wiadomość:
using System;
using Foundation;
using UIKit;
using Intents;
namespace MonkeyNotification
{
public class DonateInteraction
{
#region Constructors
public DonateInteraction ()
{
}
#endregion
#region Public Methods
public void SendMessageIntent (string text, INPerson from, INPerson[] to)
{
// Create App Activity
var activity = new NSUserActivity ("com.xamarin.message");
// Define details
var info = new NSMutableDictionary ();
info.Add (new NSString ("message"), new NSString (text));
// Populate Activity
activity.Title = "Sent MonkeyChat Message";
activity.UserInfo = info;
// Enable capabilities
activity.EligibleForSearch = true;
activity.EligibleForHandoff = true;
activity.EligibleForPublicIndexing = true;
// Inform system of Activity
activity.BecomeCurrent ();
// Create message Intent
var intent = new INSendMessageIntent (to, text, "", "MonkeyChat", from);
// Create Intent Reaction
var response = new INSendMessageIntentResponse (INSendMessageIntentResponseCode.Success, activity);
// Create interaction
var interaction = new INInteraction (intent, response);
// Donate interaction to the system
interaction.DonateInteraction ((err) => {
// Handle donation error
...
});
}
#endregion
}
}
Przyglądając się szczegółowo temu kodowi, tworzy i wypełnia wystąpienie NSUserActivity
(jak pokazano w powyższej sekcji Tworzenie działania ). Następnie tworzy wystąpienie INSendMessageIntent
(które dziedziczy z INIntent
) i wypełnia je szczegółami wysyłanego komunikatu:
var intent = new INSendMessageIntent (to, text, "", "MonkeyChat", from);
Obiekt INSendMessageIntentResponse
zostanie utworzony i przekazany NSUserActivity
powyżej:
var response = new INSendMessageIntentResponse (INSendMessageIntentResponseCode.Success, activity);
Element INInteraction
jest tworzony na podstawie właśnie utworzonej intencji wysyłania komunikatów (INSendMessageIntent
) i odpowiedzi (INSendMessageIntentResponse
):
var interaction = new INInteraction (intent, response);
Na koniec system jest powiadomieniem o interakcji:
// Donate interaction to the system
interaction.DonateInteraction ((err) => {
// Handle donation error
...
});
Procedura obsługi ukończenia jest przekazywana, w której aplikacja może reagować na darowiznę pomyślnie lub kończy się niepowodzeniem.
Najlepsze rozwiązania dotyczące działań
Firma Apple sugeruje następujące najlepsze rozwiązania dotyczące pracy z działaniami:
- Służy
NeedsSave
do aktualizacji ładunku z opóźnieniem. - Upewnij się, że zachowaj silne odwołanie do bieżącego działania.
- Przesyłaj tylko małe ładunki, które zawierają tylko wystarczającą ilość informacji, aby przywrócić stan.
- Upewnij się, że identyfikatory typów działań są unikatowe i opisowe przy użyciu notacji odwrotnej DNS w celu ich określenia.
Schema.org
Jak pokazano powyżej, pomaga systemowi zrozumieć, NSUserActivity
jakie informacje aktualnie pracuje użytkownik na ekranie. Schema.org dodaje podobne możliwości do stron internetowych.
Schema.org może zapewnić takie same typy interakcji opartych na lokalizacji w witrynie internetowej. Firma Apple zaprojektowała nowe sugestie dotyczące lokalizacji, które działają tak samo dobrze, gdy są wyświetlane w przeglądarce Safari, jak w aplikacji natywnej.
Niektóre Schema.org tło:
- Zapewnia otwarty standard słownictwa znaczników internetowych.
- Działa przez uwzględnienie metadanych strukturalnych na stronach internetowych.
- Dostępnych jest ponad 500 schematów reprezentujących różne koncepcje.
- Implementując ją w witrynie internetowej, deweloper może uzyskać niektóre korzyści wynikające z używania
NSUserActivity
w aplikacji natywnej.
Schematy są rozmieszczane w drzewie, takim jak struktura, w której określone typy, takie jak Restauracja, dziedziczą z bardziej ogólnych typów, takich jak Lokalna firma. Aby uzyskać więcej informacji, zobacz Schema.org.
Jeśli na przykład strona internetowa zawierała następujące dane:
<script type="application/ld+json">
{
"@context":"http://schema.org",
"@type":"Restaurant",
"telephone":"(415) 781-1111",
"url":"https://www.yanksing.com",
"address":{
"@type":"PostalAddress",
"streetAddress":"101 Spear St",
"addressLocality":"San Francisco",
"postalCode":"94105",
"addressRegion":"CA"
},
"aggregateRating":{
"@type":"AggregateRating",
"ratingValue":"3.5",
"reviewCount":"2022"
}
}
</script>
Jeśli użytkownik odwiedził tę stronę w przeglądarce Safari, a następnie przełączyć się do innej aplikacji, informacje o lokalizacji ze strony zostaną przechwycone i oferowane jako sugestia lokalizacji w innych częściach systemu (jak pokazano w sekcji Działania powyżej).
Przeglądarka Safari wyodrębni wszystkie elementy na stronie internetowej zgodnej z dowolną z następujących właściwości schematu:
- PostalAddress
- Geokoordyny
- Właściwość telefoniczna.
Aby uzyskać więcej informacji, zobacz nasz przewodnik wyszukiwania za pomocą znaczników internetowych.
Sugestie dotyczące korzystania z lokalizacji
W następnej sekcji omówiono korzystanie z sugestii lokalizacji, które pochodzą z innych części systemu (takich jak aplikacja Mapy) lub innych aplikacji innych firm.
Istnieją dwa główne sposoby korzystania z sugestii dotyczących lokalizacji przez aplikację:
- Za pomocą klawiatury QuickType.
- Bezpośrednio korzystając z informacji o lokalizacji w aplikacjach rozsyłania.
Sugestie dotyczące lokalizacji i klawiatura QuickType
Jeśli aplikacja zajmuje się adresami w formatach tekstowych, aplikacja może skorzystać z sugestii dotyczących lokalizacji za pośrednictwem interfejsu użytkownika QuickType. System iOS 10 rozszerza interfejs użytkownika QuickType o następujące funkcje:
- Aplikacja może dodawać wskazówki dotyczące semantycznej intencji pól tekstowych w interfejsie użytkownika.
- Aplikacja może otrzymywać proaktywne sugestie w aplikacji.
- Aplikacja może korzystać z rozszerzonej autokorekcji.
Nowa TextContentType
właściwość kontrolek pól tekstowych w systemie iOS 10 umożliwia deweloperowi zdefiniowanie intencji semantycznej dla wartości, którą użytkownik wprowadzi w danym polu. Na przykład:
var textField = new UITextField();
textField.TextContentType = UITextContentType.FullStreetAddress;
Informuje system, że aplikacja oczekuje, że użytkownik wprowadzi pełny adres ulicy w danym polu. Dzięki temu klawiatura QuickType automatycznie udostępnia sugestie dotyczące lokalizacji na klawiaturze, gdy użytkownik wprowadza wartość w tym polu.
Poniżej przedstawiono kilka typowych typów dostępnych dla deweloperów w klasie statycznej UITextContentType
:
Name
GivenName
FamilyName
Location
FullStreetAddress
AddressCityAndState
TelephoneNumber
EmailAddress
Sugestie dotyczące routingu aplikacji i lokalizacji
W tej sekcji przyjrzymy się używaniu sugestii dotyczących lokalizacji bezpośrednio z poziomu aplikacji routingu. Aby aplikacja routingu dodała tę funkcję, deweloper będzie korzystać z istniejącej MKDirectionsRequest
platformy w następujący sposób:
- Aby podwyższyć poziom aplikacji w wielozadaniowości.
- Aby zarejestrować aplikację jako aplikację routingu.
- Aby obsłużyć uruchamianie aplikacji za pomocą obiektu MapKit
MKDirectionsRequest
. - Aby zapewnić systemowi iOS możliwość sugerowania aplikacji użytkownikowi w odpowiednim czasie na podstawie zaangażowania użytkowników.
Po uruchomieniu aplikacji z obiektem MapKit MKDirectionsRequest
powinno nastąpić automatyczne przekazanie wskazówek użytkownikowi do żądanej lokalizacji lub przedstawienie interfejsu użytkownika, który ułatwia użytkownikowi rozpoczęcie uzyskiwania wskazówek. Na przykład:
using System;
using Foundation;
using UIKit;
using MapKit;
using CoreLocation;
namespace MonkeyChat
{
[Register ("AppDelegate")]
public class AppDelegate : UIApplicationDelegate, IUISplitViewControllerDelegate
{
...
public override bool OpenUrl (UIApplication app, NSUrl url, NSDictionary options)
{
if (MKDirectionsRequest.IsDirectionsRequestUrl (url)) {
var request = new MKDirectionsRequest (url);
var coordinate = request.Destination?.Placemark.Location?.Coordinate;
var address = request.Destination.Placemark.AddressDictionary;
if (coordinate.IsValid()) {
var geocoder = new CLGeocoder ();
geocoder.GeocodeAddress (address, (place, err) => {
// Handle the display of the address
});
}
}
return true;
}
}
}
Przyjrzyj się szczegółowo temu kodowi. Sprawdza, czy jest to prawidłowe żądanie docelowe:
if (MKDirectionsRequest.IsDirectionsRequestUrl(url)) {
Jeśli tak jest, tworzy element MKDirectionsRequest
na podstawie adresu URL:
var request = new MKDirectionsRequest(url);
W systemie iOS 10 można wysłać adres, który nie ma współrzędnych geograficznych, co powoduje, że deweloper musi zakodować adres:
var geocoder = new CLGeocoder();
geocoder.GeocodeAddress(address, (place, err)=> {
// Handle the display of the address
});
Sugestie dotyczące aplikacji multimediów
Jeśli aplikacja obsługuje dowolny typ multimediów, takich jak aplikacja podcastów lub zawartość multimediów przesyłanych strumieniowo, taka jak audio lub wideo, z systemem iOS 10, może korzystać z sugestii multimedialnych w systemie.
W przypadku aplikacji obsługujących multimedia system iOS obsługuje następujące zachowania:
- System iOS promuje aplikacje, których użytkownik może używać w oparciu o poprzednie zachowanie.
- Sugestie związane z aplikacją będą prezentowane w centrum uwagi i widoku dzisiaj.
- Jeśli aplikacja spełnia jeden z następujących wyzwalaczy, może zostać podwyższony poziom uprawnień do sugestii ekranu blokady:
- Po podłączeniu słuchawek lub urządzenia Bluetooth nawiązuje połączenie.
- Po dotarciu do samochodu.
- Po przybyciu do domu lub pracy.
Dzięki włączeniu prostego wywołania interfejsu API w systemie iOS 10 deweloper może utworzyć bardziej atrakcyjne środowisko ekranu blokady dla użytkowników aplikacji multimedialnej. Za pomocą MPPlayableContentManager
klasy do zarządzania odtwarzaniem multimediów na ekranie blokady aplikacji będą wyświetlane pełne kontrolki multimediów (takie jak przedstawione przez aplikację Muzyka).
using System;
using MediaPlayer;
using UIKit;
namespace MonkeyPlayer
{
public class PlayableContentDelegate : MPPlayableContentDelegate
{
#region Constructors
public PlayableContentDelegate ()
{
}
#endregion
#region Override methods
public override void InitiatePlaybackOfContentItem (MPPlayableContentManager contentManager, Foundation.NSIndexPath indexPath, Action<Foundation.NSError> completionHandler)
{
// Access the media item to play
var item = LoadMediaItem (indexPath);
// Populate the lock screen
PopulateNowPlayingItem (item);
// Prep item to be played
var status = PreparePlayback (item);
// Call completion handler
completionHandler (null);
}
#endregion
#region Public Methods
public MPMediaItem LoadMediaItem (Foundation.NSIndexPath indexPath)
{
var item = new MPMediaItem ();
// Load item from media store
...
return item;
}
public void PopulateNowPlayingItem (MPMediaItem item)
{
// Get Info Center and album art
var infoCenter = MPNowPlayingInfoCenter.DefaultCenter;
var albumArt = (item.Artwork == null) ? new MPMediaItemArtwork (UIImage.FromFile ("MissingAlbumArt.png")) : item.Artwork;
// Populate Info Center
infoCenter.NowPlaying.Title = item.Title;
infoCenter.NowPlaying.Artist = item.Artist;
infoCenter.NowPlaying.AlbumTitle = item.AlbumTitle;
infoCenter.NowPlaying.PlaybackDuration = item.PlaybackDuration;
infoCenter.NowPlaying.Artwork = albumArt;
}
public bool PreparePlayback (MPMediaItem item)
{
// Prepare media item for playback
...
// Return results
return true;
}
#endregion
}
}
Podsumowanie
W tym artykule opisano proaktywne sugestie i pokazano, jak deweloper może używać ich do kierowania ruchu do aplikacji platformy Xamarin.iOS. Ten krok obejmował wdrożenie proaktywnych sugestii i przedstawionych wytycznych dotyczących użycia.