背景

在最近几年中,越来越多的企业会将自己的网站转换成手机端的应用。这里所谓的转换,其实不是摒弃一个使用另一个,而是共存。所以就会有一个比较普遍的需求就是,很多的企业或者开发者希望使用同一套Web API来同时支持自己的网站和手机应用去操作自己的数据库,并且这个数据库的结构也是一样的。

这篇博客就是在阐述一个一模一样的情况。我的一个客户已经基于.NET Core 2.0的版本开发了一套Web API,并且网站已经在运行中。但是他想要用Xamarin.Forms来开发一个手机应用,并且是想用到Azure Mobile Apps SDK来使用离线同步(Offline Sync)功能。

当然,他希望使用同一套Web API和同一个数据库数据结构。

什么是离线同步?

如果是中文,就真的非常好理解。在使用手机的过程中,我们无法保证手机的网络信号永远是畅通的。再假设你现在在乘飞机,手机开启了飞行模式。这时候你需要在你的app中添加一些记录,比如是todoList,你当然希望一旦关闭飞行模式恢复网络之后,这些数据会被同步到数据库。这就是离线同步的意义。

看下面的微软官方解释:

Offline sync allows users to interact with a mobile application, viewing, adding, or modifying data, even where there isn’t a network connection. Changes are stored in a local database, and once the device is online, the changes can be synced with the Azure Mobile Apps instance. This article explains how to add offline sync functionality to a Xamarin.Forms application.

阅读更多

背景

我的客户希望能够在Xamarin.Forms的Secondary Toolbar中达到如下效果:

一开始的时候我认为这可能是Xamarin本身的一个限制,因为我一直认为安卓原生态的应用一定是可以直接实现的。

但是当我深入研究之后,我发现之所以Xamarin.Forms不支持这样做其实是因为安卓原生态也并不支持。

阅读更多

背景

一个客户想要在WPF中查找所有安装的Windows Store App,但是如果是编程来写,只能用UWP的类库,不支持WPF。
经过研究发现,使用PowerShell的脚本Get-AppxPackage -AllUsers可以获得所有的用户账号下安装过的Store App。

相关链接:Get-AppxPackage

所以本文的宗旨就是使用.NET的类库来调用PowerShell的脚本。

阅读更多

背景

这篇文档是基于之前那篇WebView版本的。当时在那篇文档中也说过,WebView版本的特点是,简单易用,把Bot的Url嵌入到WebView的Source对象中。但是这个方法的弊端就是,Xamarin的可控性太小,所有的都依赖于网页版的Bot的开发,并且WebView的性能终究不会比得上Xamarin通过自己发送请求。

那么这篇文档介绍的会是另外一种方式,也是比较推荐的,就是使用DirectLine API来直接通过Xamarin与Bot通信。

阅读更多

背景

现在微软主推的就是Azure平台的产品,这篇文档的内容就是如何将Azure的Bot framework使用到Xamarin中。写这篇文档的原因也很简单,我support Xamarin,并且想学习Bot,之后会陆陆续续再有许多文章结合各种技术,比如如何在Xamarin中使用Azure Cognitive Service,等等。

用到的技术

  • Xamarin (WebView)
  • Bot Framework (Web Chat)

说明

阅读这篇文档首先要有一定的关于Xamarin和Bot framework的基本认识。本文是记录如何使用Xamarin的Web View来host一个bot service,所以这个bot的channel是web chat,顾名思义,web chat的bot是基于一个url来访问的,这也是为什么需要用Web View来作为容器的原因。

之后还会有一篇文档,是关于如何使用Direct Line API来与bot通信,该文档中的bot的channel就必须是Direct Line了。

阅读更多

背景

Xamarin的开发的一个无法避免的弊端就是在很多Android原生态应用中被普遍用到的库,未必有.NET的实现版本。这个问题就如同当时微软WinPhone失败的原因一样,在另外两个平台中非常普遍的应用,在WinPhone中没有或者开发进度缓慢。

Xamarin为了解决这个问题,在Android和iOS的平台下都设计了一个叫做binding library的项目类型,这个项目类型就是为了将user找到的任何已经发布成类库的jar包等,或者iOS下的objective C的类库包转换成一个DLL文件。

本文主要讲述的是Android端的关于jar包的binding。Android还有一种aar包,这种包是带有resource内容的jar包,所以通常理解上来说原理应该是一样的。

内容

本文我主要分两部分,第一部分是通过一个微软资深员工写的troubleshooting的文档来做一个整理归纳,以便用于以后的参考。第二部分是我自己实际做过的troubleshooting中我写过的一些东西,以及对照第一部分中知识点中的原理。

阅读更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×