iOS

iOS 9 ile Uygulamanızın Reklamını Ücretsiz Yapın

Spotlight arama uygulaması iOS 3'ten beri gelişerek devam ediyor. Geliştiricilerin bu özellikten tek faydalanabildiği alan, kendi uygulamalarına kullanıcının buradan hızlıca ulaşmasıydı. Telefonunuzda çok fazla uygulama yüklüyse, bu özellik adeta bir can kurtaran oluyordu. Ancak emsallerine göre o...

Abdulbasıt Tanhan |

15.10.2015

Spotlight arama uygulaması iOS 3'ten beri gelişerek devam ediyor. Geliştiricilerin bu özellikten tek faydalanabildiği alan, kendi uygulamalarına kullanıcının buradan hızlıca ulaşmasıydı. Telefonunuzda çok fazla uygulama yüklüyse, bu özellik adeta bir can kurtaran oluyordu. Ancak emsallerine göre oldukça yetersiz olduğunu da kabul etmek lazım. Daha doğrusu, durum iOS 9'a kadar böyleydi...

iOS 9'un sağladığı yeni Search API'ler ile uygulamalarınızda indekslediğiniz içerikler, Spotlight ve Safari arama sonuçlarında görülebilecek. Bu indekslemeyi public olarak yaptığınızda, uygulamanız telefonda yüklü değilse bile, arama sonuçlarında kullanıcılara önerilecek. Bu, uygulamanızın keşfedilmesi ve reklamı açısından çok önemli bir adım.

Örneğin; Hesabım uygulamasının telefonda yüklü olmadığı halde, "kontör yükle" denildiğinde ya da "Hesabım" veya "Tarkan" yazdığınızda, Turkcell Müzik uygulaması size önerilebilir. Bu öneriye tıklandığında, doğrudan ilgili sayfaya kullanıcıyı yönlendirmeniz de mümkün. Bunun için Apple üç adet teknoloji getiriyor.

 

NSUserActivity

iOS 8 ile gelen bu API, Handoff için kullanılıyor. Amaç, telefonda açtığınız bir uygulama deneyimine farklı bir cihazda (iPad, iPhone, Mac) kaldığınız yerden devam etmek. iOS 9'da buna ek olarak aktivitenizi indeksleyebiliyorsunuz. İsterseniz bu aktiviteyi public olarak indekslemek de mümkün. Apple'a yeterli veri ulaştığında uygulamanız, belirlediğiniz anahtar kelimelere karşılık Apple tarafından önerilebiliyor.

 

NSUserActivity için örnek kod

 //ViewController yüklenmesi gerekir ki userActivity instance'ini kullanabilelim. Bu nedenden dolayi NSUserActivity'de, Corespotlighttan farkli olarak indexleme icin sayfayi goruntulemeniz gerekir.
    NSUserActivity *myActivity = [[NSUserActivity alloc] initWithActivityType:@"com.turkcell.muzik.song"];
    myActivity.title = @"Tarkan-Şımarık";
    myActivity.userInfo = @{@"productID":@"myProductID"};
    myActivity.keywords = [NSSet setWithArray:@[@"Şımarık"]];
    
    CSSearchableItemAttributeSet *searchableItemAttributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:@"com.turkcell.muzik.song.attributeset"];
    searchableItemAttributeSet.contentDescription = @"Şımarık dinle";
    searchableItemAttributeSet.title = @"Şımarık";
    searchableItemAttributeSet.displayName = @"Şımarık";
    searchableItemAttributeSet.keywords = @[@"Tarkan",@"Şımarık"];
    UIImage *thumbnail = [UIImage imageNamed:@"tarkan-simarik"];
    searchableItemAttributeSet.thumbnailData = UIImageJPEGRepresentation(thumbnail, 0.7);
    myActivity.contentAttributeSet = searchableItemAttributeSet;

    myActivity.eligibleForSearch = YES;//Spotlight aramalarında görünmesi için.
    myActivity.eligibleForPublicIndexing = YES;//Uygulama public indexleyerek başklarında bu sonucu uygulama yükle olmasa bile Apple tarafından önerilebilmesi için.
    
    self.userActivity = myActivity;
    self.userActivity.needsSave = YES;

 

CoreSpotlight

CoreSpotlight, daha geleneksel bir indeksleme API'si sağlıyor. Uygulamanızdaki veri modellerini indeksleyerek, kullanıcının yüklü uygulamalar arasında içerik aramasını sağlayabiliyorsunuz. Örneğin daha önce rezervasyon yaptığınız bir uçuş listelenebilir ya da bu uçuşa tıklandığında uygulamanız açılarak ayrıntılar gösterilebilir.

 

CoreSpotlight için örnek kod

CSSearchableItemAttributeSet *searchableItemAttributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:@"com.turkcell.muzik.song.attributeset"];
    searchableItemAttributeSet.contentDescription = @"Şımarık dinle";
    searchableItemAttributeSet.title = @"Şımarık";
    searchableItemAttributeSet.displayName = @"Şımarık";
    searchableItemAttributeSet.keywords = @[@"Tarkan",@"Şımarık"];
    UIImage *thumbnail = [UIImage imageNamed:@"tarkan-simarik"];
    searchableItemAttributeSet.thumbnailData = UIImageJPEGRepresentation(thumbnail, 0.7);    

//Bu şekilde tüm şarkılarınızı sayfayı ziyaret etmediğiniz halde indexleyebilirsiniz.
    CSSearchableItem *searchableItem = [[CSSearchableItem alloc] initWithUniqueIdentifier:@"com.turkcell.muzik.song.tarkan.simarik"
                                                                         domainIdentifier:@"com.turkcell.muzik.song"
                                                                             attributeSet:searchableItemAttributeSet];
    
    CSSearchableIndex *defaultSearchableIndex = [CSSearchableIndex defaultSearchableIndex];
    [defaultSearchableIndex indexSearchableItems:@[searchableItem] completionHandler:^(NSError * _Nullable error) {
        if (error)
            NSLog(@"print error: %@", error.description);
        else
            NSLog(@"indexed successfully");
    }];

 

Web Markup

Burada iş, uygulama yerine web sayfanıza düşüyor. Bu nedenle web sayfanızın iyi kurgulanması önemli. Web sayfalarınızdaki deep linkler uygulamalarla ilişkilendirildiğinde, Apple tarafından taranarak indeksleniyor. Burada uygulamanızı iTunes'a yollarken, belirttiğiniz web sitesi ve pazarlama adresleri de önem kazanıyor.