Aracılığıyla paylaş


Xamarin.iOS'ta NSUserActivity ile arama

NSUserActivity iOS 8'de kullanıma sunulmuştur ve İletim verilerini sağlamak için kullanılır. Uygulamanızın belirli bölümlerinde farklı bir iOS cihazında çalışan başka bir örneğine geçirilebilen etkinlikler oluşturmanıza olanak tanır. Alıcı cihaz daha sonra önceki cihazda başlatılan etkinliğe devam edebilir ve kullanıcının kaldığı yerden devam edebilir. İletimi kullanma hakkında daha fazla bilgi için lütfen İletim'e Giriş belgelerimize bakın.

iOS 9'da NSUserActivity yeni, dizine eklenebilir (hem genel hem de özel olarak) ve Spotlight Search ve Safari'den aranabilir. Bir NSUserActivity öğesini aranabilir olarak işaretleyip dizine alınabilen meta veriler ekleyerek, etkinlik iOS cihazındaki arama sonuçlarında listelenebilir.

Uygulama Geçmişi'ne genel bakış

Kullanıcı uygulamanızdan bir etkinliğe ait bir arama sonucu seçerse, uygulama başlatılır ve tarafından NSUserActivity açıklanan etkinlik yeniden başlatılır ve kullanıcıya sunulur.

Aşağıdaki özellikleri NSUserActivity Uygulama Arama'yı desteklemek için kullanılır:

  • EligibleForHandoff – if ise true, bu etkinlik bir İletim işleminde kullanılabilir.
  • EligibleForSearch – ise true, bu etkinlik cihaz içi dizine eklenir ve arama sonuçlarında sunulur.
  • EligibleForPublicIndexing – ise true, bu etkinlik Apple'ın bulut tabanlı dizinine eklenir ve uygulamanızı iOS cihazına henüz yüklememiş olan kullanıcılara (arama yoluyla) sunulur. Diğer ayrıntılar için aşağıdaki Genel Arama Dizini Oluşturma bölümüne bakın.
  • Title – Etkinliğiniz için bir başlık sağlar ve arama sonuçlarında görüntülenir. Kullanıcılar başlığın metnini de arayabilir.
  • Keywords – Dizini oluşturulacak ve son kullanıcı tarafından aranabilir hale getirilecek etkinliğinizi açıklamak için kullanılan dize dizisidir.
  • ContentAttributeSet – Etkinliğinizi ayrıntılı olarak CSSearchableItemAttributeSet açıklamak ve arama sonuçlarında zengin içerik sağlamak için kullanılır.
  • ExpirationDate – Bir etkinliğin yalnızca belirli bir tarihe kadar gösterilmesini istiyorsanız, bu tarihi burada belirtebilirsiniz.
  • WebpageURL – Etkinlik web'de görüntülenebiliyorsa veya uygulamanız Safari'nin derin bağlantılarını destekliyorsa bağlantıyı buradan ziyaret edilecek şekilde ayarlayabilirsiniz.

NSUserActivity Hızlı Başlangıcı

Uygulamanızda aranabilir NSUserActivity bir uygulama uygulamak için şu yönergeleri izleyin:

İçeriğinizi aranabilir hale getirmek için kullanmanın NSUserActivity bazı ek avantajları vardır.

Etkinlik Türü Tanımlayıcıları Oluşturma

Arama Etkinliği oluşturabilmeniz için önce, bunu tanımlamak için bir Etkinlik Türü Tanımlayıcısı oluşturmanız gerekir. Etkinlik Türü Tanımlayıcısı, belirli bir Kullanıcı Etkinlik Türünü benzersiz olarak tanımlamak için NSUserActivityTypes kullanılan uygulamanın Info.plist dosyasının dizisine eklenen kısa bir dizedir. Uygulamanın desteklediği ve Uygulama Arama'ya açık olduğu her etkinlik için dizide bir giriş olacaktır.

Apple, çakışmaları önlemek için Etkinlik Türü Tanımlayıcısı için ters DNS stilinde bir gösterimin kullanılmasını önerir. Örneğin: com.company-name.appname.activity belirli uygulama tabanlı etkinlikler veya com.company-name.activity birden çok uygulamada çalıştırabilen etkinlikler için.

Etkinlik Türü Tanımlayıcısı, etkinlik türünü tanımlamak için bir NSUserActivity örnek oluşturulurken kullanılır. Kullanıcının arama sonucuna dokunması sonucunda bir etkinlik devam ettiğinde Etkinlik Türü (uygulamanın Ekip Kimliği ile birlikte), etkinliğe devam etmek için hangi uygulamanın başlatıldığını belirler.

Bu davranışı desteklemek için gerekli Etkinlik Türü Tanımlayıcılarını oluşturmak için Info.plist dosyasını düzenleyin ve Kaynak görünümüne geçin. Aşağıdaki biçimde bir NSUserActivityTypes anahtar ekleyin ve tanımlayıcılar oluşturun:

Plist düzenleyicisinde NSUserActivityTypes anahtarı ve gerekli tanımlayıcılar

Yukarıdaki örnekte, arama etkinliği () için yeni bir Etkinlik Türü Tanımlayıcısı oluşturdukcom.xamarin.platform. Kendi uygulamalarınızı oluştururken, dizinin içeriğini uygulamanızın NSUserActivityTypes desteklediği etkinliklere özgü Etkinlik Türü Tanımlayıcıları ile değiştirin.

Etkinlik Oluşturma

Aşağıda, cihaz üzerinde dizinde barındırılan arama için etkinlik oluşturma örneği verilmiştir:

// 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();

özelliğini aşağıdaki gibi ayarlayarak ContentAttributeSet daha fazla ayrıntı ekleyebiliriz NSUserActivity :

Ek Arama Ayrıntılarına genel bakış

kullanarak ContentAttributeSet , son kullanıcıyı bunlarla etkileşime geçmek üzere ayarlayan zengin arama sonuçları oluşturabilirsiniz.

Etkinliğe Yanıt Verme

Kullanıcının uygulamamız için bir arama sonucuna (NSUserActivity) dokunmasına yanıt vermek için AppDelegate.cs dosyasını düzenleyin ve yöntemini geçersiz kılınContinueUserActivity. Örneğin:

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;
}

Bunun, İletim isteklerine yanıt vermek için kullanılan yöntem geçersiz kılma yöntemiyle aynı olduğunu unutmayın. Kullanıcı Spot Arama sonuçlarında uygulamamızdan bir bağlantıya tıklarsa uygulamamız ön plana getirilir (veya zaten çalışmıyorsa başlatılır) ve bu bağlantı tarafından temsil edilen içerik, gezinti veya özellik görüntülenir:

Aramadan Önceki Durumu Geri Yükle

Genel Arama Dizini Oluşturma

Yukarıda gördüğümüz gibi, iOS 9 kullanıcının belirli bir iOS cihazında önceden keşfettiği ve kullandığı uygulama içeriğine ve özelliklerine arama erişimi sağlamayı kolaylaştırır. Genel Dizin Oluşturma ile iOS 9, henüz içerik veya özellik keşfetmeyen (veya uygulamayı yüklememiş olan) kullanıcılara da aramalarında bu sonuçları almaları için bir yol sağlar.

Genel Dizin oluşturma aşağıdaki şekilde çalışır:

  1. Uygulamanız için etkinlik oluşturduğunuzda, bunu genel olarak işaretleyebilirsiniz.
  2. Genel etkinlikler Apple'a gönderilir ve bulutta dizinlenir.
  3. Daha fazla kullanıcı bir cihazda uygulamanızla etkileşime geçtikçe ve etkinliğin temsil ettiği belirli özelliği veya içeriği kullandıkça, sıralamada artar.
  4. Popüler genel sonuçlar, uygulama yüklü olmasa bile diğer kullanıcılar tarafından kullanılabilir.
  5. Bu genel sonuçlar Spotlight Search ve Safari'de (etkinlik bir URL içeriyorsa) gösterilir.

Yukarıda oluşturduğumuz özel arama etkinliğini alabilir ve genel olacak şekilde genişletebiliriz:

// 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();

Bir etkinliğin ayarıyla EligibleForPublicIndexing = truegenel dizin oluşturma için ayarlanmış olması, apple'ın genel bulut dizinine otomatik olarak eklendiği anlamına gelmez. Önce aşağıdaki koşulların karşılanması gerekir:

  1. Arama sonuçlarında görünmelidir ve birçok kullanıcı tarafından seçilmelidir. Etkinlik katılımı eşiği karşılanıncaya kadar sonuçlar özel kalır.
  2. Uygulama sağlama, kullanıcıya özgü verilerin dizine alınıp genel kullanıma sunulmasını engeller.

Ek Avantajlar

Uygulamanızda aracılığıyla NSUserActivity Uygulama Arama'yı benimseyerek aşağıdaki özelliklere de sahip olursunuz:

  • İletim - Uygulama Arama, İletim ()NSUserActivity ile aynı mekanizmayı kullanarak içeriği, gezintiyi ve/veya özellikleri kullanıma sunarken, uygulamanızın kullanıcılarının bir cihazda etkinlik başlatmasına ve başka bir cihazda devam etmelerine kolayca izin vekleyebilirsiniz.
  • Siri Önerileri - Siri Önerileri'nin normalde yaptığı standart önerilerin yanı sıra, uygulamanızdaki etkinler de otomatik olarak önerilebilir.
  • Siri Akıllı Anımsatıcıları - Kullanıcılar Siri'den uygulamanızdaki etkinlikleri anımsatmalarını isteyebilir.