Emily Grossman speaks about App Optimization and Universal Links at SMX West, San Jose 2016. Topics in this presentation include, but are not limited to:
- Understanding Universal Links
- Apple Search App Indexing
- Indexing Methods
- App Search API Validation
How to Optimize Apps for Apple iOS Search and iOS 9 Universal Links - SMX West, San Jose 2016
1. #SMX #32A @goutaste
What You Need To Know About Apple iOS App Search & Universal Links
How To
Optimize Apps
for Apple iOS
Search & iOS 9
Universal
Links
7. #SMX #32A @goutaste
“Apple’s App Store commission is
now at a run-rate of $9 billion, more
than its total revenue in the year the
iPod launched.”
- Benedict Evans, @BenedictEvans -
13. #SMX #32A @goutaste
Source: https://dev.branch.io/recipes/branch_universal_links/ios/#which-appsbrowsers-support-universal-links
Universal Links
Are Not 100%
“Universal”Yet
“Conditionally” means issues like…
• Will NOT work when pasted
into URL field
• Will work with a <a href=“..”>
click across domains (ie Google
IMDB)
• Will NOT work with a <a
href=“…”> on the same
domain (ie IMDB IMDB)
14. #SMX #32A @goutaste
Google App Indexing for iOS Apps
Requires Universal Links
Source: bit.ly/GoogleAppIndexing-iOS
17. #SMX #32A @goutaste
1
• Modify your application
delegate
• Adopt an entitlement in
Xcode that lists each domain
associated with your app
READ:
http://bit.ly/ios9universallinks
http://bit.ly/UIApplicationDelegate-
Reference
WATCH: http://bit.ly/appleuniversallinks
Prepare App
18. #SMX #32A @goutaste
{
"applinks": {
"apps": [],
"details": {
»ABC0123.com.domain.App": {
"paths":[ "*" ]
}
}
}
}
Create an apple-app-site-
association file for each
associated domain with the
content your app supports and
host it at the root level.
NOTE:The association file must be hosted
on a domain that supports HTTPS/TLS, even
if the HTTP deep links are not themselves
served via HTTPS.
2 Associate App With Website
19. #SMX #32A @goutaste
{
"applinks": {
"apps": [],
"details": {
»ABC0123.com.domain.App": {
"paths":[
”/folder/subfolder/”,
”/folder2/subfolder2/*”,
]
}
}
}
}
Modify apple-app-site-
association file to specify
only the content that is parallel
between the app and the website.
3 Control Paths
23. #SMX #32A @goutaste
Core Spotlight NSUserActivity Web Markup
Used for…
Indexing public app screens
that mirror content on the
web
DOES require
corresponding web
content
Add code toWEB
Public Cloud Index
Used for…
Indexing app screens that
contain private/ personal
data
Does NOT require
corresponding web
content
Add code to APP
Private Device Index
Used for…
Indexing private and public
navigation points in the app
Does NOT require
corresponding web
content
Add code to APP
Private Device Index and/
or Public Cloud Index
Private Public
24. #SMX #32A @goutaste
TYPE OF SCREEN APITO USE
Content that the user views NSUserActivity
Frequently used navigation points and features NSUserActivity
Content created or curated by the user, such as photos or a list of
favorites
Core Spotlight
New messages, content, or items that arrive on the device Core Spotlight
Content that lives in both your app and your website Web Markup
33. #SMX #32A @goutaste
Private or Public
Public Only
Search results
meta data for
display and
rankings
‘Canonical’
More info here: bit.ly/NSUserActivity
NSUserActivity
34. #SMX #32A @goutaste
CoreSpotlight NSUserActivity Web MarkupNSUserActivity
var eligibleForSearch var eligibleForPublicIndexing
Private/
Device Index
Public/ Cloud
Index
PRIVATEAPP SCREEN PUBLIC APP SCREEN
Photo representation of 75% of Google Ad revenue coming from iOS devices
1 click = Apple
2 clicks = Google
Universal Links intro
The “ideal” being one link to operate everything – web or app
http://1nova.com/wallpapers/wp-content/uploads/sites/34/2015/02/One-Ring-to-Rule-them-All.jpg
Note: Conditionally working means that it works (i.e., opens the app) some of the time:
Universal Links will not work if you paste the link into the browser URL field.
Universal Links work with a user driven <a href="..."> element click across domains. Example: if there is a Universal Link on google.com pointing to bnc.lt, it will open the app.
Universal Links will not work with a user driven <a href="..."> element click on the same domain. Example: if there is a Universal Link on google.com pointing to a different Universal Link on google.com, it will not open the app.
Universal Links cannot be triggered via Javascript (in window.onload or via a .click() call on an <a> element), unless it is part of a user action.
Google, Gmail, Inbox, Twitter, Facebook, FB Messenger, WeChat – Universal Links only work when you have a webview already open. In other words, they do not work in-app from the feed / main views. Again, they also must be cross-domain, aka if your user is on yourapp.com and clicks a Universal Link also for yourapp.com, it will not work. However, clicking from yourapp.com to bnc.lt will trigger the link to function as a Universal Link and open your app directly.