Windows Azure之Mobile Service

我建个android app和Windows Azure的Mobile Service配合,以实现会员注册的功能,实际十分简单,微软家的东西真心好用

首先新建个Mobile Service

New->Mobile Service->Create之后弹出下图的对话框

URL就自定义一个,如果有人注册了会报错,换个就好,database新建还是使用已存在的都可以,新建之后会多一步让你输入要新建的数据库的名称和密码,backend就选Javascript,点击箭头下一步

使用现存的会让你输入密码,建立完成,点击主界面左侧的Mobile service,出现下图

我这里选“连接一个已存在的android app”,其实现在下面微软的教程就放在那里了

在自己的android app中确保build.gradle(project:你自己的工程名)里面有:

repositories {
        jcenter()
    }

build.gradle(project:Model:app)中添加windows azure sdk,就是把这几句添加到dependencies里去:

   compile 'com.google.code.gson:gson:2.3'
    compile 'com.google.guava:guava:18.0'
    compile 'com.microsoft.azure:azure-mobile-services-android-sdk:2.0.3'
    compile (group: 'com.microsoft.azure', name: 'azure-notifications-handler', version: '1.0.1', ext: 'jar')

在自己的实现MobileService功能代码中添加:

private MobileServiceClient mClient;
private ProgressBar mprogressBar;
  try {
            mClient=new MobileServiceClient("你的URL",
                    "你的KEY",
                    this).withFilter(new ProgressFilter());

            mStudentTable=mClient.getTable(Student.class);
        } catch (MalformedURLException e) {
            e.printStackTrace();

            createAndShowDialog(new Exception("移动服务发生错误,检查URL和Key试试"), "Error");
        }
private class ProgressFilter implements ServiceFilter {

        @Override
        public ListenableFuture<ServiceFilterResponse> handleRequest(
                ServiceFilterRequest request, NextServiceFilterCallback next) {

            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    if (mprogressBar != null) mprogressBar.setVisibility(ProgressBar.VISIBLE);
                }
            });

            SettableFuture<ServiceFilterResponse> result = SettableFuture.create();
            try {
                ServiceFilterResponse response = next.onNext(request).get();
                result.set(response);
            } catch (Exception exc) {
                result.setException(exc);
            }

            dismissProgressBar();
            return result;
        }
    }
private void dismissProgressBar() {
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                if (mprogressBar != null) mprogressBar.setVisibility(ProgressBar.GONE);
            }
        });
    }

上面代码中的“你的URL”和“你的KEY”替换成你自己新建的Mobile Service的URL和KEY,其实在现在向导里面有的,没有单击上面的“DASHBOARD”,你的URL和key如图

关于KEY,点击MANAGE KEYS,等一秒,复制那个Application key。

接下来,定义那个要传送的实体类Student

import com.google.gson.annotations.SerializedName;

import java.util.Objects;

/**
 * Created by chen on 2015/9/19.
 */
public class Student {

    @SerializedName("id")
    private String mID;

    @SerializedName("stuid")
    private String mStuID;

    @SerializedName("name")
    private String mName;

    @SerializedName("sex")
    private String mSex;

    @SerializedName("qq")
    private String mQQ;

    //Constructor
    public Student(){

    }

    public Student(String id,String stuid,String name,String sex){
        this.setID(id);
        this.setStuID(stuid);
        this.setName(name);
        this.setSex(sex);
    }

    public void setID(String id) {
        this.mID = id;
    }

    public void setName(String name) {
        this.mName=name;
    }

    public void setSex(String sex) {
        this.mSex = sex;
    }

    public void setStuID(String stuID) {
        this.mStuID = stuID;
    }

    public void setStuQQ(String stuQQ){this.mQQ=stuQQ;}

    @Override
    public String toString(){return getName();}

    public String getName(){return mName;}

    public String getID(){return mID;}

    public String getStuID(){return mName;}

    public String getSex(){return mSex;}
}

注意:实体类中类似@SerializedName("id")里面的“id”要和接下在azure管理中定义的Column名字一致,官方文档中说,只要一致mobile service就会自己解析json并将其对应存储到数据库中。

下面就定义数据库,如图,在azure的管理界面上,如图点DATA,选自己的数据库,新建张表,表中的Column要和上面的实体类一致,最终的效果应该这样

运行安卓客户端,success!

 

posted @ 2015-09-20 21:38  冬色  阅读(625)  评论(0编辑  收藏  举报