WWDC2019 Session 515

Transcript

[ Music ]
[ Applause ]
>> Hello. My name is Jessie
Berlin, and I'm here to talk
about what's new in Safari.
We have three topics to cover
today, and the most exciting one
is desktop-class browsing on
iPad.
In iOS 13, we've made a set of
fundamental changes to allow
iPad to browse desktop websites,
and you'll notice here that I'm
showing Safari View Controller.
It also gets these desktop
websites right out of the box.
If you have a custom in-app web
browser, or even just an app
that uses WKWebView, you're
going to want to check out the
talk from earlier this week for
detailed guidance and best
practices.
So if you haven't already, go
check it out.
Next up, improvements to Safari
extensions.
We'll start with a refresher on
the four different types of
Safari extensions.
First, there are Legacy Safari
extensions from macOS.
They were introduced in 2010
with Mac OS X Snow Leopard, and
deprecated last year.
Next, content blockers.
These are available for both iOS
and macOS, and they're designed
for speed and user privacy.
Third, share extensions.
These are also available on both
iOS and macOS.
Once invoked by the user,
they're able to run JavaScript
on the webpage, and return data
to your app extension.
And finally, Safari app
extensions, available on macOS.
These run on web pages without
user action and can be
restricted to run on a single
website or run everywhere.
Now that content blockers, share
extensions, and Safari app
extensions provide great
extensibility options without
the performance and privacy
problems of Legacy Safari
extensions, we are dropping
support for Legacy Safari
extensions in Safari 13.
Safari will no longer load them.
Today, we're going to be
primarily focusing on
improvements to content blockers
and Safari app extensions on
macOS.
These Safari extensions come
bundled with Mac apps built in
Xcode, which gives you the
ability to take advantage of
powerful native APIs and
frameworks, as well as HTML,
JavaScript, and CSS.
And when you install an app with
a Safari app extension from the
Mac App Store, your extensions
show up immediately in Safari's
preferences, ready for your
users to turn on.
However, you can also distribute
your app directly from your
website after running it through
the notarization service.
Notarized apps need to be
launched at least once for their
extension to show up in Safari.
We love the content blockers and
Safari app extensions you have
created, and we also really
appreciate those of you who have
filed bug reports, suggested
improvements, and commented on
the Safari developer forums.
And in response to that
feedback, we've added new APIs
for Safari app extensions to
use.
Earlier this year, we built out
our windows and tabs APIs.
Now you can navigate a tab
directly from your app extension
process to your full-page
content, to provide extra
functionality, like a dashboard.
You can get all the open windows
and tabs to provide things like
bookmarking services, and get a
reference to the containing tab
and window when handling a
message from your injected
script to do things like
updating your toolbar items.
We've added a way for you to get
the visible contents of a page.
You could use this, for example,
to show a custom visual
representation of your user's
tabs.
And you now have more control
over your UI in Safari, with the
ability to programmatically show
and dismiss your pop-overs when
it makes the most sense for your
use cases.
You gave us feedback about
wanting to know when a page will
navigate, in order to redirect
for a different version of the
website.
New in Safari 13, there's a
callback that your app extension
can handle to get notified of
the full redirect chain.
For those of you who developed
content blockers, we heard that
you really want a way to show
off to your users just how much
you're helping protect them
against tracking, crypto
currency mining, or other
unnecessary scripts.
So we're excited to announce, in
Safari 13, that you can now
associate your content blocker
with your Safari app extension,
so that it can get notified when
content is blocked.
Users will be able to just turn
on the Safari app extension if
they want to get statistics from
you on what you've blocked or
keep it off if they want the
most private experience.
I've gone through these APIs
pretty quickly here, but we've
created a video that you can
watch to learn more in-depth how
to adopt them.
Check it out in the WWDC app.
The last time you checked out
Safari app extensions might've
been in 2016, when we first
introduced them.
As you can see from what we
covered today, we've added a lot
of functionality and APIs since
then.
If you haven't converted your
Legacy Safari extension yet,
head on over to our guide on
developer.apple.com.
And that's improvements to
Safari extensions.
Lastly, I want to talk about
following links on macOS.
I'm of course talking about
following links like these to
websites and apps.
For those of you bringing your
iPad apps to the Mac, you might
be wondering how this is going
to work.
In-app web browsing isn't common
on macOS, but it is on iOS.
And on iOS, you're probably
using SafariViewController for
the best in-app web browsing
experience.
When you open a link in
SafariViewController in your Mac
app, it does exactly what your
macOS users will expect.
It opens the link directly in
their browser, and immediately
calls SafariViewController did
finish to notify you.
For those of you who have
implemented custom in-app web
browser on iOS, you should
strongly instead consider
directly opening links on Mac,
so that they open in the user's
web browser.
That's what your macOS users
will be expecting.
We're also excited that
universal links are coming to
macOS this year.
On iOS and macOS, universal
links allow you to have ordinary
HTTPS URLs to your website open
in your app instead, if it's
installed.
It's way better than custom URL
schemes, which just don't work
if your app isn't installed.
Universal links on Mac initially
open in your web browser, just
like before, and when they open
in Safari and your app is
installed, Safari will show a
banner at the top of the
webpage.
There, the user can choose to
open the link in your app, and
if they do, future link follows
will be open directly in your
app.
To learn more about universal
links, check out the video we
made, available right now in the
WWDC app.
And that's following links on
macOS.
There have been a bunch of great
improvements in the intersection
of app development and web
technologies this year.
One last point I want to leave
you with.
We're committed to making Safari
app extensions and content
blockers better each year.
If you had previously checked
them out but found that a
particular API or capability was
missing, it's worth taking
another look and converting your
Legacy Safari extension.
To find out more about what we
covered today, check out the
WWDC app, where there'll be
links to resources we talked
about and further documentation.
And if you have any questions
right now, we'll be headed over
to Technology Lab 3.
We'd love to see you there.
Thank you so much and have a
great WWDC.
[ Applause ]