Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

52
Mobile Search: Making your mobile apps stand out James Montemagno @JamesMontemagno

Transcript of Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Page 1: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Mobile Search: Making your mobile apps stand outJames Montemagno @JamesMontemagno

Page 2: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
Page 3: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
Page 4: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
Page 5: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

We Apps!

189Mdownloads

a day

200mins on phone

127mins in

apps

Page 6: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

How many do we actually use?

Page 7: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

The average app user has 36 apps installed on his or her phone.

Page 8: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Only 1/4 are used daily:

Page 9: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

1/4 of apps are never used!

Page 10: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

My Phone

117 Apps107 “Non-system” Apps!

Page 11: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

17Used Today

Page 12: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Mobile search is a key way for users to discover and engage

with your app’s content.

Page 13: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
Page 14: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Optimal SearchExperience

Page 15: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

iOSAndroidXamarin.Forms

Page 16: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

iOS Search APIs

NSUserActivity• Handoff Enabled• Pieces of Content &

Pages• When user views• Ability to save state of

screen• Less Data• More Functionality

Core Spotlight• Pre-Indexing Entire

App’s Content• Full set or Part of set

• More Data • Less Funcationality

Web Markup• Deep linking from

web

Page 17: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

NSUserActivity: Index Activities

Page 18: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

NSUserActivity

• Set “UserActivity”• Add metadata• Save “UserActivity”

Page 19: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

NSUserActivity CreateActivity(){

var activity = new NSUserActivity("com.xamarin.monkeys.monkey");activity.EligibleForSearch = true;activity.EligibleForPublicIndexing = true;activity.EligibleForHandoff = false;activity.Title = monkey.Name;

activity.Keywords = new NSSet<NSString>(new NSString(monkey.Name),new NSString("Monkey"));

var attributeSet = new CoreSpotlight.CSSearchableItemAttributeSet ();attributeSet.ContentDescription = monkey.Details;activity.ContentAttributeSet = attributeSet;

var info = NSDictionary.FromObjectAndKey(new NSString(monkey.Name),new NSString("Name"));

activity.AddUserInfoEntries(info);

return activity;}

Create NSUserActivity

Page 20: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

public override void ViewDidAppear(){

base.ViewDidAppear();

UserActivity = CreateActivity();UserActivity.BecomeCurrent();

}

public override void ViewWillDisappear(bool animated){

base.ViewWillDisappear(animated);UserActivity.ResignCurrent();

}

Set Activity

Page 21: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Respondpublic override bool ContinueUserActivity (UIApplication application,

NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler){

// Take action based on the activity typeswitch (userActivity.ActivityType) {

case "com.xamarin.monkeys.monkey":var uid = userActivity.UserInfo.ObjectForKey((NSString)"Name").ToString();

break;}

return true;}

Page 22: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Google App Indexing

• Put your app in front of users in Google Search

Page 23: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Search Better

In Google Search • Connect your Site to App

Page 24: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
Page 25: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
Page 26: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Add IntentFilter[IntentFilter(new []{ Intent.ActionView },

Categories = new []{

Android.Content.Intent.CategoryDefault,Android.Content.Intent.CategoryBrowsable

},DataScheme = "http",DataHost = "monkeysapp.com",DataPathPrefix ="/Home/Detail/")]

public class MainActivity : BaseActivity{}

Page 27: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Handle Intentprotected override void OnNewIntent(Intent intent){

base.OnNewIntent(intent);var action = intent.Action;var data = intent.DataString;if (Intent.ActionView != action || string.IsNullOrWhiteSpace(data))

return;//only if deep linkingif (!data.Contains("/Home/Detail/"))

return;

var monkeyId = data.Substring(data.LastIndexOf("/", StringComparison.Ordinal) + 1).Replace("%20", " ");

if (!string.IsNullOrWhiteSpace(monkeyId)){

var i = new Intent(this, typeof(DetailsActivity));i.PutExtra("Name", monkeyId);StartActivity(i);

}}

Page 28: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
Page 29: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
Page 30: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

google.com/webmasters

Page 31: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
Page 32: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
Page 33: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Install App Indexing NuGet

Page 34: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Create “Content Action”GoogleApiClient client;protected override void OnCreate(Android.OS.Bundle savedInstanceState){

base.OnCreate(savedInstanceState);client = new GoogleApiClient.Builder(this).AddApi(AppIndex.API).Build();

}

public IndexingAction AppIndexAction{

get{

var item = new Thing.Builder().SetName(title).SetDescription(description).SetUrl(Android.Net.Uri.Parse(url)).SetType(schemaType).SetId(url).Build();

var thing = new IndexingAction.Builder(IndexingAction.TypeView).SetObject(item).SetActionStatus(IndexingAction.StatusTypeCompleted).Build();

return thing.JavaCast<IndexingAction>();}

Page 35: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Index the Contentprotected override async void OnStart(){

base.OnStart();client.Connect();await AppIndex.AppIndexApi.StartAsync(client, AppIndexAction);

}

protected override async void OnStop(){

base.OnStop();await AppIndex.AppIndexApi.EndAsync(client, AppIndexAction);client.Disconnect();

}

Page 36: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Connecting Website

Android – DONE!

Page 37: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Monkey Time!

Page 38: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Connecting Website

Android – DONE!

iOS – ALMOST!

Page 39: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Connecting Website – Step 1

Page 40: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Connecting Website – Step 2

Page 41: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Connecting Website – Step 3

apple-app-site-associationinwebroot

Mustbeapplication/pkcs7-mime

Page 42: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Done! Yay!

Page 43: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

What about Xamarin.Forms?

Page 44: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
Page 45: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

App Links – Step 0 – Android NuGet

Page 46: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

App Links – Step 1 – Android MainActivity

Page 47: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

App Links – Step 2 - Index

Page 48: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

App Links – Step 3 – Respond (App.cs)

Page 49: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

BOOM DONE!

Page 50: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

One More Thing

Page 51: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

Resources

• Monkeys App:• https://github.com/jamesmontemagno/MonkeysApp-AppIndexing

• Evolve App• https://github.com/xamarinhq/app-evolve

• iOS Search APIs• https://developer.xamarin.com/guides/ios/platform_features/introd

uction_to_ios9/search/

Page 52: Xamarin Evolve 2016: Mobile search - making your mobile apps stand out

JamesMontemagnoDeveloperEvangelist,Xamarin

[email protected] motzcod.es @JamesMontemagno

Thank you!