>> [MUSIC].
>> Welcome back to another.Net MAUI Beginner Series Video.
I'm James Montemagno,
a Product Manager on
the Developer Community Team here at Microsoft.
Today we're continuing our journey,
learning how to build beautiful native cross-platform
desktop and mobile apps with.Net MAUI.
Now, so far we've done a lot in our application.
We've learned about what is in a file new project.
We started to build a user interface in XAML.
We added data binding in an MVVM architecture pattern,
and we even did some navigation.
Now next up is how to access Native API features.
Now when we think about native APIs,
things that are on iOS, Android,
Mac and Windows, these are things that are platform specific.
Now you can access these directly inside
of C# thanks to the underlying systems
of iOS and Android for.Net and Windows App SDK and UI3.
Now what's great about.Net MAUI is that the team abstracted
a whole bunch of common platform APIs into a single API,
for you to use it as a developer.
This means when you want to go access
common things such as geolocation,
sensors or connectivity,
you don't have to learn a bunch of different APIs.
There's a single API that you can use.
Similar to the user interface,
that abstracted common user interface controls into a single API,
that's what these APIs do as well.
Now what we're going to do is go back to our application and learn
how to integrate connectivity into our application,
which is a very common feature in nearly every single application.
Let's head over there now. In this.Net
MAUI Beginner Series we've been building the My Task application.
It's a simple task application that
allows us to add different tasks,
also allows us to swipe to delete,
or tap on one and navigate to get details and go back.
All with the XAML user interface,
data binding and the built in navigation system.
The last thing we want to do is add
some platform capabilities here.
Now it would be pretty awesome to not allow people
to add new tasks or synchronize
them unless they have Internet connectivity,
with.Net MAUI it's super simple to do that with the built in
APIs that abstracts the underlying APIs of the platform.
Let's go ahead and do that. Here again,
we have all of our application that we've been building out.
I haven't added anything to it,
so if you're following along at home,
you can just start coding along with me.
Of course you can find a full final version
of the app in the show notes.
Here we have a main page and what we can see up
top here is that we have a simple grid,
an image, an entry,
and this button called Add Command.
Below we have a CollectionView,
we have SwipeViews and we have
our view models here using full MVVM.
Now, if we want to get access specifically
to different services or different APIs,
there's tons that are built into.Net MAUI itself.
For example, let's say we go up to the Add Command here.
What we maybe you want to be able to do is check Internet here.
So I can come in and say, Microsoft.Maui.
Inside of here there are a bunch of
different namespaces such as application model,
which would give me access to different things like app actions,
app info, launching the browser.
Here's communication, for example,
which would give me access to contacts,
e-mails, phone dialers,
whole bunch of things.
There's also additional ones that we can
see inside of here, like authentication.
We of course have built in controls, devices.
There's all things that are inside of
here that you can get access to directly.
Now, the one that we need access to is going to be connectivity.
When I type in connectivity,
we can see it's in Microsoft.Maui.Networking.Connectivity.
Now associated with the connectivity is also an interface too.
I could come in and just check
the current access state
here so I can say what is the current network access?
But if you're like me and you
want your view models to be testable,
you could be able to past it a interface.
Let's go ahead and set that up.
I'm going to say IConnectivity.
Here we go. Then what I'm going to do is simply fill this in.
Of course, Visual Studio
writes all the code for me, which is spectacular.
Then what I'm able to do here is say if connectivity.
and I'm going to say network access does not
equal network access of
Internet or then I don't have Internet and I'm going to return.
What I can then do is say, await in here.
We've gone ahead and modified this to say asynchronous,
and we'll modify this to a task.
I'm going to say Shell.Current.DisplayAlert and I'll
say no Internet
and say okay.
Just with one line of code,
I'm accessing the network access
to see if I have Internet access or
not and allowing me to add that new item into the list or not.
If I don't, I'll pop up a message.
Now, we need to register
that connectivity service with the main application,
and we can do that in the MAUI program.
I'm going to do up top and say Builder.Services.AddSingleton,
and I'm going to say IConnectivity,
and then what I can do is I can pass it,
the Connectivity.Current as what
to use when it registers and resolves the IConnectivity.
Now, I'm going to go ahead and show this on Android here,
but it works on obviously all operating systems. There we go.
What's great about the Android emulator is that I can flip on and
off Internet here very easily.
This is best done in non debug mode
because the debugger does rely on
some of the underlying network connectivity
to actually debug your application.
But here's my application running and I should be able to
add Apples in there. There we go.
Now if I go in and actually toggle on, for example,
"Airplane Mode" that's going to toggle off the Internet and I'm
going to go ahead and say Oranges
and I'm going to add it's going to say,
"Uh-Oh, No Internet."
Just like that, we're using native APIs,
but completely cross-platform in the same exact code that we
have inside of our main view model to check Internet access.
It's going to work 100 percent across iOS,
Android, Mac OS and Windows.
The last thing I want to do is head over to my Mac.
We spent a lot of time inside of Visual Studio 2022 on Windows,
but I took the same exact
My Task application and I loaded them up on the Mac.
You can go ahead and run your applications from
Visual Studio 2022 from Mac or from the command line.
Here we have the Mac and iOS versions of the app.
Here you can add items,
you get swipe to delete,
you can tap and navigate and just like that,
we have our full applications ready to go on both Mac,
iOS and, of course, Android and Windows.
There you've done it. You've integrated
some platform specific APIs,
100 percent cross-platform, thanks to.Net MAUI.
Now we're going to continue our journey in the.Net
MAUI Beginner Series by taking a look
at all of the other things that you need to
know and resources to continue your learning journey.
Stay tuned for more in the.Net MAUI Beginner Series.