Sdílet prostřednictvím


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.

Přehled historie aplikací

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 – Pokud truelze tuto aktivitu použít v operaci Předání.
  • EligibleForSearch – Pokud truese tato aktivita přidá do indexu na zařízení a zobrazí se ve výsledcích hledání.
  • EligibleForPublicIndexing – Pokud truese 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:

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:

Klíč NSUserActivityTypes a požadované identifikátory v editoru plist

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:

Přehled podrobností o sčítání hledání

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:

Obnovení předchozího stavu z vyhledávání

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:

  1. Když vytvoříte aktivitu pro aplikaci, můžete ji označit jako veřejnou.
  2. Veřejné aktivity se odesílají společnosti Apple a indexují se v cloudu.
  3. 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í.
  4. Oblíbené veřejné výsledky budou k dispozici ostatním uživatelům, i když nemají nainstalovanou aplikaci.
  5. 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:

  1. 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.
  2. 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.