图片 36

.Net移动开发平台 ,基于VisualStudio的可视化开发——Smobiler平台入门教程

在 cloud云平台中新建一个应用,并在“应用设置”中配置服务器信息,点击“应用打包”进行Ios或Android
app打包即可。(详细云平台打包信息请查看 云平台介绍)

Smobiler4.0提供了自定义控件,开发者可自定义/创新控件内容,增强了控件的可扩展性。(自定义控件介绍:http://smobiler.com/guide/custom-control.aspx)

3, 使用新的Smobiler.Device库,包含所有的硬件类。

a、如果你引用的是别的项目组、别的产品、甚至是别的公司的引用,输入明确的网址是当然的、必须的。如果你的项目组把WCF服务器端客户端是分开两个解决方案各自编译的,不得不各自调试,最好建议你的头儿整合到一起,这个是为了自己好,省的误导。

客户端点击“世界你好”按钮,便进入服务端事件代码断点处,点击“逐语句”或“逐过程”按钮即可进行代码调试,点击“跳出”按钮便可跳出调试。

5.云平台概述及打包文档:http://www.smobiler.com/yunapp.aspx

1, PageView的AutoPlay默认属性改为True。

a、App.config中多了一段话,就是上一节的最后一个截图中那个配置文件的内容

 图片 1

1.listview,gridview暂时不支持布局的动态更新

Smobiler 4.4已经正式发布,还不快来看看?
原文地址:
这次更新要感谢我们的用户,在使用smobiler的过程中不吝反馈,同时我们的程序员也及时响应用户提出的新增、优化、修复等内容。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:8733/Design_Time_Addresses/Kinoo.WCF.ServiceLibrary/Service1/"
                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1"
                contract="ServiceReference1.IService1" name="BasicHttpBinding_IService1" />
        </client>
    </system.serviceModel>
</configuration>

 图片 2

l Smobiler4.0提供了三大技术亮点:第三方插件、JS、自定义控件等;

 

然后添加代码:

图片 3

3.开发文档:http://smobiler.com/Help/html/R_Project_Documentation.htm

9,  修复ListView没有行项时使用NewData报错问题。

图片 4

图片 5

IOS
Client(版本号:4.0.0):Safari浏览器打开http://www.smobiler.com直接下载

3, 修复FontIcon取消选择时默认显示adjust的问题。

 

一,设计器下载

下载地址

Designer下载地址:

 

 图片 6

控件拖拽之间,灵活创建任何风格和颜色的APP界面,界面中支持绝对和相对方式的布局设计。(绝对布局方式介绍:http://smobiler.com/guide/layout.aspx?id=0;相对布局方式介绍:http://smobiler.com/guide/layout1.aspx?id=0)

4, 取消ListView,GridView,PageView的NewData方法,改用NewRow,NewCell,NewPage实现。

图片 7

 图片 8

Smobiler4.0集成了部分JS功能,开发者可通过JS来实现控件美观的浏览和特效等(JS介绍:http://smobiler.com/guide/js.aspx)

4, AutoCompleteTextBox(自动完成文本框)

b、所谓的契约就是以前我们常说的接口,Service1是服务契约,GetData是操作契约。输入的参数、返回的值都是数据契约,Int、String这些基础数据类型可以理解为数据契约,你自己建立的类要想作为输入输出的参数之一,标记上DataContract即可,如下图所示。把各种文章说到的各种理论全忘记,记住刚才这句话以及下面这个图就足够了。以后的开发再慢慢深化即可。

 图片 9

1.Designer(版本号:4.0.0.0):http://www.smobiler.com/version/SmobilerDesigner4_0.exe

iOS
Client下载地址:请用safari浏览器打开此链接

5、如果解决方案中,有N个子项目都要调用服务器,难道每个都要添加服务引用吗?

  1. 开发移动应用

JS

2, 修改项目模板MobileForm,MobileUserControl中的引用为Smobiler.Plugins,取消对Smobiler.Core.Controls.Native的引用。

继续上一节的内容。上一节的网址:

图片 10

7.应用下载地址:https://apps.smobiler.com/App/AppDetails?AppID=30

这些插件都在smobiler商城(shop.smobiler.com)中,开发者可在商城中免费获取这些组件、控件后,在打包应用时直接添加。

如果你的宿主程序的代码(下一节开始我们自己写宿主程序代码),在初始化Host或客户端时,使用C#代码在指定存取协议,最好抓紧改掉,那代码80%的可能没法见人的。就像如今的ADO.NET的基础操作现在基本没人会写一样,那种代码最好不要写,也没必要记住。

通过以下步骤,可以简单了解到如何下载Smobiler
Designer(设计器)、Client(客户端),以及如何通过设计器进行开发和调试移动应用,并在服务端部署、Cloud打包、访问您所开发的移动应用。

Smobiler支持分插件打包功能和插件扩展机制,让应用开发更加灵活。

 

单建一个类库项目,添加服务引用,其他所有使用服务器端的子项目都引用这个类库即可了。

  1. 客户端连接服务器

自定义控件

1, 修改Smobiler.Core.Controls.Native命名控件及dll为Smobiler.Plugins。

4、数据也获取了,程序也调通了,这个实例用的是什么数据存取协议呢??SOAP?Socket?Remoting?

 图片 11

最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便

4, TableView中新增点击事件。

1、在解决方案中新增一个WPF
Windows项目,或者根据你的能力建立其他可独立执行的项目Console或者WinForm都可以,我这里命名为Kinoo.WCF.Client

 我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:

Smobiler入门介绍视频

 

3、现在可以问问为什么能看到IService1、还能看到ServiceClient、还能调用GetData接口?

四Cloud打包

强大的插件移动应用引擎

3, 设计器中的控件如果移动到相对布局则重置Location。

右键单击WCF服务库项目,选择【属性】,此项目比别的项目多一个标签:【WCF选项】,这里有个【在调试同一解决方案中的其他项目是启动WCF服务主机】,默认这个CheckBox是被Checked的,所以只要是解决方案中的其它项目调试,他都会自动启动。这个实在太方便了。因为我们的WCF服务将来可以发布成一个独立的Windows程序作为运行时主机,也可以发布成一个Console程序作为运行时主机,还可以发布成Windows服务作为运行时主机,但是这个都是发布以后的事情,调试阶段,有这个东西在,实在太爽了,用一段时间就会体会到了。

图片 12 

6.控件介绍:http://www.smobiler.com/SmobilerDemo/autocompletetextbox.aspx

1, 企业认证用户可设置路由(即客户端可根据不同的IP地址访问不同的服务器组)。

   1:          private void btnInvokeRequest_Click(object sender, RoutedEventArgs e)

   2:          {

   3:              try

   4:              {

   5:                  Service1Client client = new Service1Client();

   6:                  txtResponse.Text = client.GetData(Int32.Parse(txtRequest.Text));

   7:              }

   8:              catch (Exception ex)

   9:              {

  10:                  txtResponse.Text = ex.Message;

  11:              }

  12:          }

下载并安装 Smobiler
Designer,打开Visual
Studio;使用.Net语言,即可进行APP开发

4.开发指南:http://smobiler.com/guide/outline.aspx

7, ProgressView(进度控件)

<Window x:Class="Kinoo.WCF.Client.MainWindow" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
        <Button Name="btnInvokeRequest" Content="Invoke" HorizontalAlignment="Left" Margin="351,104,0,0" VerticalAlignment="Top" Width="75" Height="23" Click="btnInvokeRequest_Click"/> 
        <TextBox Name="txtRequest" HorizontalAlignment="Left" Height="23" Margin="67,104,0,0" TextWrapping="Wrap" Text="Please input a number" VerticalAlignment="Top" Width="265"/> 
        <TextBlock Name="txtResponse" HorizontalAlignment="Left" Margin="67,150,0,0" TextWrapping="Wrap" Text="Responses" VerticalAlignment="Top" Height="48" Width="359"/>

    </Grid> 
</Window> 

 图片 13

源码下载地址:https://github.com/comsmobiler/SmoONE

10,           为TabView的Button增加了Press事件。

6、打开MainWindow的设计视图,拖拽几个控件上来:

在手机浏览器中打开 Smoblier
官网,下载并安装Smobiler(客户端)。

插件扩展机制是指可以将第三方原生控件/组件按照Smobiler规范进行封装,以插件形式集成到Smobiler应用中,以此来提高扩展应用能力。(插件开发介绍:http://smobiler.com/guide/plugin.aspx)

2, Android版Smobiler
Client目前可在Smobiler官网下载。

3、右键单击此项目选择【添加服务引用】,弹出下面窗体,直接点击【发现(Discovery)】:

图片 14 图片 15

2.项目运行后设计器打开且有内容的界面,界面显示空白,但客户端可以正常运行;暂时需关闭运行后显示异常空白的界面,再重新打开界面,界面才可以

6, 修复Picker中的内容设置为空时会崩溃的问题。

2、不做任何工作,直接打开项目的app.config,发现里面没WCF的东西,只有这点内容:

 

分插件打包是指Smobiler开发应用在Cloud云平台打包安装包的时候,可自行选择需要加入的插件,比如开发一个企业资讯类应用,则可以不加入定位、微信支付等插件,这样最终生成的安装包大小可以减少很多,而且应用运行效率也将提高。

5, 修复AlbumView控件的ResourcePath与ThumbResourcePath属性无效的问题。

首先添加引用:

打开手机客户端,“扫一扫”快速添加服务器。(如果服务器没有映射外网地址,请确保手机与电脑处于同一网络环境中)

2.客户端:

10,           修复了WebView中使用IP地址无法加载的问题。

 

图片 16 

界面布局

4, 侧边栏在用户未设置高度与Flex时Flex默认为1,防止因未设置宽度而不显示的问题。

图片 17

点击客户端服务器,快速链接服务器,即可体验刚才你所开发的Demo。

已知问题

 

a、之所以能看到IService1接口,是因为添加服务引用;之所以能看到ServiceClient,是因为Visual
Studio帮你封装了一个只要是写客户端的人都会封装的代码,之所以封装的这个Client里能看到GetData接口,是因为你服务器端的声明。

三服务端部署

Android
Client(版本号:4.0.0):http://www.smobiler.com

8, ListMenuView添加了Tag参数。

 

4.0正式与4.0公测差异:http://smobiler.com/forum.php?mod=viewthread&tid=790

5, 合并硬件插件sm_r100,sm_r1000,sm_r2000为sm_r_scanner插件。

6、如果你【添加服务引用】时【发现】不了服务,可以到下面这个网址看看原因:

快速生成,简单部署。

1, MapRoute(地图路径控件)

都不是,看看服务器端或客户端的配置文件即可了,至于协议,也是虽然入门必知,但也是较深的内容,后面的章节再讲。因为:WCF接口在开发时可以不用管用什么协议存取,只要专注于接口开发即可。至于到底采用什么协议,可以由配置文件决定(当然也可以代码决定,但是写这种初级代码不是现代程序员的风格),甚至配置文件可以决定同时采用N种协议,一起支持!是不是很爽呢?

  1. 下载APP客户端

2, 开放硬件R100的所有按键自定义。

本节代码下载地址:Kinoo.WCF-2.rar

双击控件事件,设置控件事件

9, HighLightLabel(高亮文本控件)

8、右键单机项目【Kinoo.WCF.Client】,选择【调试】-【启动新实例】,然后WPF客户端启动了,但是也发现另一个问题,Host服务器端也自动启动了。先不管为什么自动启动,我们先输入个值试试火力!

 图片 18

其他更新:

图片 19

在Visual
Studio中启动 图片 20你所编写程序的项目。

2, TreeView控件增加ImageType属性,增加对Image支持。

图片 21

 图片 22

图片 23

图片 24

  图片 25

3, FingerPrint(指纹识别组件)

那么问题来了:

图片 26 

3, iOS版Smobiler
Client目前可在Smobiler官网下载。

图片 27

在窗体中添加控件

6, Android版Smobiler
Client添加了支持官方手持硬件的插件包,今后手持应用的开发调试可直接通过Smobiler
Client进行,不需要再打包应用。

如果改了GUID还是不行,重建一个项目好了。

图片 28 

2, 修复ToolBar中点击事件会触发两次的问题。

4、直接点击【确定】,Visual
Studio会自动启动那个服务端,获取服务器端的各种存取端口(或者说Contract),执行完成,发现几个变化

在Visual Studio选中调试行,添加断点。

5, TextField(带特效的输入框控件)

1、为什么我调试Client的时候,服务器端会自动执行?

 

8, DropdownAlert(下拉提醒组件)

神秘莫测的WCF入门至此完成,只写了两行代码,感觉如何呢?WCF简单吗?NO,看看那些长篇大论的WCF入门教程你就知道了。只不过Visual
Studio讲这一切简化了。感谢微软!

  1. 调试移动应用

 

b、解决方案多了一些内容:增加了一个Service
Reference,增加了与其配套的命名空间,比如System.ServiceModel、System.Runtime.Serialization,如下图所示,其中这些命名空间看来是客户端必备了,具体左右以后章节再说,或者自己现在去Google。

在Visual
Studio右击“生成”项目,将项目中debug文件夹拷贝到服务器上,运行项目的exe文件即可。

2, ListView、GridView、PageView增加UpdateRow,UpdateCell,UpdatePage方法,可根据数据源更新内容。

5、我们双击ServiceReference1,可以打开对象浏览器,看到Service1Client,如下图所示,同时构造方法默认有多达5个重载,当然,我们的无脑开发,还是采用无参数的,后面的章节再讲其它构造方法。

通过属性设置调整控件样式 图片 29

8, 修复iOS版中,滚动panel中TextBox弹出键盘异常的问题。

App.Config<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

 

二,开发和调试移动应用

7, 修复设计器撤销控件更改时,控件丢失的问题。

图片 30

 图片 31

 

 

图片 32 图片 33 

Android
Client下载地址:

b、服务器端客户端在一个解决方案下不会产生任何影响、冲突。反倒调试的时候非常爽,你可以在服务端GetData上加个断点,一调试就知道了。

IOS App客户端、Andriod App客户端,一次开发、多端运行

9, 将所有插件合并至一个Dll中。

7、在按钮的Click事件里,添加如下代码:

新建一个项目,开始编写代码,既可创建一个属于自己的App Demo。

11,           ListView可滚动到指定位置。

7、OK,一个完整的客户端完成了,可以调用服务器端所有的开发接口(或者说服务契约ServiceContract)。

2, RongIM(融云组件)

图片 34图片 35

 

图片 36

6, CalendarStrip(日历条控件)

5、说起上面这个特性不得不提到WCF的另一种项目类型【WCF服务应用程序】,我们建立一个,会发现,里面也有个配置文件,不过这个文件是Web.Config,而不是App.Config,说明这种项目比较适合Web,同时,右键单击项目,点击【发布】,是以发布Web应用的形式来发布的。这种通用性不高,尤其是在大数据量传输的时候,WEB模式传数据速度、稳定性等没保证。至于再后面两种服务应用,暂时不做讨论,后面章节再说。

1, Smobiler
Cloud上新增了应用名称可用字符的提示。

2、为什么【添加服务引用】时,使用【发现】,而不是使用明确的地址,原因有几点:

10,           MarqueeLabel(跑马灯文本控件)

c、服务端接口发生变化了,怎么办?右键单机服务引用,选择【更新服务引用】

11,           Pulseloader(动态加载控件)

 

我们对以下功能进行了优化

using Kinoo.WCF.Client.ServiceReference1;

最后,我们带来了这些新的自选控件

9、至此,完整的wCF客户端+半完整的WCF服务器端(为什么说服务器端半完整,可以去看上一节所说),已经OK了。

3, TableViewTextBoxColumn添加了可设置多行属性。

1, Smobiler
3.X版本全部已转入维护阶段,不再建议用户使用Smobiler
3.X版本进行移动应用的开发。

7, Numeric控件中添加了ValueChange事件。

以上为Smobiler
4.4的全部更新内容。

另外,我们新增了以下功能:

 

P.S.

6, TextBox中添加失去焦点方法

5, 新增Smobiler.Utility.JPush功能。(关于该功能我们提供了一个相应的demo,点击获取)

4, 修复GridView与ListView中Head、Foot的在没有数据时不显示的问题。

为了方便开发者在开发应用时直接调用这些组件、控件,最新4.4版本的SmobilerDesigner默认安装所有的插件库及硬件库。

我们还修复了这些功能:

5, 添加TitleHeight属性,以优化AlbumView控件查看图片详情界面。

1, 修复ToolBar中的MessageText不能为空的问题。

在这次更新中,与旧版本的主要差异如下(重要考点,敲黑板)