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.
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 isetrue
, bu etkinlik bir İletim işleminde kullanılabilir.EligibleForSearch
– isetrue
, bu etkinlik cihaz içi dizine eklenir ve arama sonuçlarında sunulur.EligibleForPublicIndexing
– isetrue
, 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ı olarakCSSearchableItemAttributeSet
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:
- Etkinlik Türü Tanımlayıcıları Oluşturma
- Etkinlik Oluşturma
- Etkinliğe Yanıt Verme
- Genel Arama Dizini Oluşturma
İç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:
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
:
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:
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:
- Uygulamanız için etkinlik oluşturduğunuzda, bunu genel olarak işaretleyebilirsiniz.
- Genel etkinlikler Apple'a gönderilir ve bulutta dizinlenir.
- 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.
- Popüler genel sonuçlar, uygulama yüklü olmasa bile diğer kullanıcılar tarafından kullanılabilir.
- 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 = true
genel 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:
- 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.
- 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.