Hledání pomocí NSUserActivity v Xamarin.iOS
NSUserActivity
byl zaveden v iOSu 8 a slouží k poskytování dat pro předání.
Umožňuje vytvářet aktivity v konkrétních částech aplikace, které se pak dají předat jiné instanci aplikace spuštěné na jiném zařízení s iOSem. Přijímající zařízení pak může pokračovat v aktivitě spuštěné na předchozím zařízení a pokračovat tam, kde uživatel přestal. Další informace o používání handoffu najdete v naší dokumentaci úvodu k handoffu .
Novinkou v iOSu 9 NSUserActivity
je možné indexovat (veřejně i soukromě) a prohledávat ve Spotlight Search a Safari. Když tuto aktivitu označíte NSUserActivity
jako prohledávatelnou a přidáte indexovatelná metadata, může být aktivita uvedená ve výsledcích hledání na zařízení s iOSem.
Pokud uživatel vybere výsledek hledání, který patří do aktivity z vaší aplikace, aplikace se spustí a aktivita popsaná uživatelem NSUserActivity
se restartuje a zobrazí se uživateli.
K podpoře vyhledávání aplikací se používají následující vlastnosti NSUserActivity
:
EligibleForHandoff
– Pokudtrue
lze tuto aktivitu použít v operaci Předání.EligibleForSearch
– Pokudtrue
se tato aktivita přidá do indexu na zařízení a zobrazí se ve výsledcích hledání.EligibleForPublicIndexing
– Pokudtrue
se tato aktivita přidá do cloudového indexu Společnosti Apple a zobrazí se uživatelům (prostřednictvím vyhledávání), kteří ještě nenainstalovali aplikaci na zařízení s iOSem. Další podrobnosti najdete v části Indexování veřejného vyhledávání níže.Title
– Poskytuje název vaší aktivity a zobrazuje se ve výsledcích hledání. Uživatelé můžou také hledat text samotného názvu.Keywords
– Je pole řetězců, které slouží k popisu vaší aktivity, která bude indexována a prohledávatelná koncovým uživatelem.ContentAttributeSet
– SloužíCSSearchableItemAttributeSet
k podrobnějšímu popisu vaší aktivity a poskytování bohatého obsahu ve výsledcích hledání.ExpirationDate
– Pokud chcete, aby se aktivita zobrazovala jenom v daném datu, můžete toto datum zadat zde.WebpageURL
– Pokud je možné aktivitu zobrazit na webu nebo pokud vaše aplikace podporuje hloubkové odkazy Safari, můžete nastavit odkaz na návštěvu zde.
Rychlý start pro NSUserActivity
Postupujte podle těchto pokynů k implementaci prohledávatelného NSUserActivity
vyhledávání ve vaší aplikaci:
- Vytváření identifikátorů typu aktivity
- Vytvoření aktivity
- Reakce na aktivitu
- Indexování veřejného vyhledávání
Existuje několik dalších výhod , které můžete použít NSUserActivity
k tomu, aby byl obsah prohledávatelný.
Vytváření identifikátorů typu aktivity
Než budete moct vytvořit aktivitu vyhledávání, budete muset vytvořit identifikátor typu aktivity, abyste ho identifikovali. Identifikátor typu aktivity je krátký řetězec přidaný do NSUserActivityTypes
pole souboru Info.plist aplikace, který slouží k jedinečné identifikaci daného typu aktivity uživatele. V poli bude jedna položka pro každou aktivitu, kterou aplikace podporuje a zveřejňuje pro vyhledávání aplikací.
Apple navrhuje pro identifikátor typu aktivity použít zápis zpětného stylu DNS, aby nedocházelo ke kolizím. Příklad: com.company-name.appname.activity
pro konkrétní aktivity založené na aplikacích nebo com.company-name.activity
pro aktivity, které se můžou spouštět napříč více aplikacemi.
Identifikátor typu aktivity se používá při vytváření NSUserActivity
instance k identifikaci typu aktivity. Když aktivita pokračuje v důsledku toho, že uživatel klepne na výsledek hledání, typ aktivity (spolu s ID týmu aplikace) určuje, která aplikace se má spustit, aby pokračovala v aktivitě.
Chcete-li vytvořit požadované identifikátory typu aktivity pro podporu tohoto chování, upravte soubor Info.plist a přepněte do zobrazení Zdroj . NSUserActivityTypes
Přidejte klíč a vytvořte identifikátory v následujícím formátu:
V předchozím příkladu jsme vytvořili jeden nový identifikátor typu aktivity pro aktivitu vyhledávání (com.xamarin.platform
). Při vytváření vlastních aplikací nahraďte obsah NSUserActivityTypes
pole identifikátory typu aktivity specifické pro aktivity, které vaše aplikace podporuje.
Vytvoření aktivity
Následuje příklad vytvoření aktivity pro hostované vyhledávání v indexu zařízení:
// 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();
Další podrobnosti bychom mohli přidat tak, že ContentAttributeSet
vlastnost naší NSUserActivity
vlastnosti nastavíme takto:
Pomocí ContentAttributeSet
příkazu můžete vytvořit bohaté výsledky hledání, které koncového uživatele přinutí k interakci s nimi.
Reakce na aktivitu
Pokud chcete odpovědět uživateli, který klepne na výsledek hledání (NSUserActivity
) pro naši aplikaci, upravte soubor AppDelegate.cs a přepište metodu ContinueUserActivity
. Příklad:
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;
}
Všimněte si, že se jedná o stejnou metodu přepsání použitou k reagování na žádosti o předání. Když teď uživatel klikne na odkaz z naší aplikace ve výsledcích hledání Spotlightu, aplikace se přenese do popředí (nebo začne, pokud ještě není spuštěná) a zobrazí se obsah, navigace nebo funkce reprezentované tímto odkazem:
Indexování veřejného vyhledávání
Jak jsme viděli výše, iOS 9 usnadňuje vyhledávání přístupu k obsahu a funkcím aplikace, které uživatel už zjistil a použil na daném zařízení s iOSem. Díky veřejnému indexování poskytuje iOS 9 způsob, jak uživatelům, kteří ještě nezjistili obsah nebo funkce (nebo kteří ještě aplikaci nenainstalovali), aby tyto výsledky získali i při hledání.
Veřejné indexování funguje následujícím způsobem:
- Když vytvoříte aktivitu pro aplikaci, můžete ji označit jako veřejnou.
- Veřejné aktivity se odesílají společnosti Apple a indexují se v cloudu.
- S tím, jak více uživatelů komunikuje s vaší aplikací na zařízení a používá konkrétní funkci nebo obsah reprezentovaný aktivitou, zvyšuje se jeho pořadí.
- Oblíbené veřejné výsledky budou k dispozici ostatním uživatelům, i když nemají nainstalovanou aplikaci.
- Tyto veřejné výsledky se zobrazí ve Spotlight Search a Safari (pokud aktivita obsahuje adresu URL).
Můžeme vzít aktivitu privátního vyhledávání, kterou jsme vytvořili výše, a rozšířit ji tak, aby byla veřejná:
// 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();
Jen proto, že je aktivita nastavená pro veřejné indexování nastavením EligibleForPublicIndexing = true
, neznamená to, že se automaticky přidá do indexu veřejného cloudu Společnosti Apple. Nejprve musí být splněny následující podmínky:
- Musí se zobrazit ve výsledcích hledání a vybrat ho mnoho uživatelů. Výsledky zůstávají soukromé, dokud nebude splněna prahová hodnota zapojení aktivity.
- Zřizování aplikací brání indexování a zveřejnění všech dat specifických pro uživatele.
Další výhody
Když ve své aplikaci přijmete Vyhledávání NSUserActivity
aplikací, získáte také následující funkce:
- Předání – Vzhledem k tomu, že vyhledávání aplikací vystavuje obsah, navigaci nebo funkce pomocí stejného mechanismu jako Handoff (
NSUserActivity
), můžete uživatelům aplikace snadno povolit, aby zahájili aktivitu na jednom zařízení a pokračovali na jiném zařízení. - Návrhy Siri – Spolu se standardními návrhy, které návrhy Siri obvykle dělají, se dají automaticky navrhnout aktivní z vaší aplikace.
- Inteligentní připomenutí Siri – Uživatelé budou moct požádat Siri, aby jim připomněla aktivity z vaší aplikace.