Android升级指南

升级你的 Android 应用

本文档将指导你将现有的 Android 应用的 SDK 升级为新的 Android-SDK_2.0 版本。

完成升级分为两个步骤:

1.安装新的 Wilddog SDK。

2.更新 Wilddog Auth 部分代码。

3.更新 Wilddog Sync 部分代码。

你可以随时升级你的项目。你的应用和现有 SDK 仍可继续工作。当你准备在自己的应用中使用某些新 Wilddog 功能时,你就可以更新自己的代码。

以下为将 Wilddog Android 应用代码迁移至新 API 的步骤。

安装新 Wilddog SDK

您不必立即更新应用代码。现有数据库和身份验证代码仍然适用于您迁移的项目。

但是,当您准备开始在应用中使用某些新 Wilddog 功能时,则可以安装新 Wilddog SDK。 更新之前:

compile 'com.wilddog:wilddog-client-android:0.6.4+'

更新之后:

compile 'com.wilddog.client:wilddog-sync-android:2.0.1'
compile 'com.wilddog.client:wilddog-auth-android:2.0.1'

更新 Auth 部分代码

Wilddog 身份验证功能现在以独立出来,所以现在身份验证操作是在 WilddogAuth 实例完成,而不是通过 Wilddog 引用完成的。

更新你的 gradle 依赖项

引入下面 依赖 到 应用级的gradle.build 文件中

compile 'com.wilddog.client:wilddog-auth-android:2.0.1'

添加完成后进行rebuild。

初始化

更新之前:

Wilddog.setAndroidContext(getApplicationContext());
Wilddog wilddog=new Wilddog("https://<YOUR-WILDDOG-APP>.wilddogio.com");

更新之后:

  WilddogOptions wilddogOptions = new WilddogOptions.Builder().setSyncUrl("https://<YOUR-WILDDOG-APP>.wilddogio.com").build();
        WilddogApp.initializeApp(this,wilddogOptions);

登录一个用户

身份验证方法的工作方式与以前类似,但现在作为方法以新名称存在于 WilddogAuth 对象上,AuthData 现在替换为 WilddogUser。例如: 更新之前:

Wilddog ref = new Wilddog("https://<appId>.wilddogio.com");
// 构造一个handler,用于处理终端用户认证的结果。
Wilddog.AuthResultHandler authResultHandler = new Wilddog.AuthResultHandler() {
    @Override
    public void onAuthenticated(AuthData authData) {
        // 认证成功
    }

    @Override
    public void onAuthenticationError(WilddogError error) {
        // 认证失败
    }
};
ref.authAnonymously(authResultHandler);

更新之后:

  WilddogOptions wilddogOptions = new WilddogOptions.Builder().setSyncUrl("https://<YOUR-WILDDOG-APP>.wilddogio.com").build();
        WilddogApp.initializeApp(this,wilddogOptions);
WilddogAuth mauth = Wilddog.getInstance();
mauth.signInAnonymously().addOnCompleteListener(new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(Task<AuthResult> task) {
        if (task.isSuccessful()) {
            user = task.getResult().getWilddogUser();
            Log.d("result", "登陆成功" + task.getResult().getWilddogUser().getUid());
        } else {
            Log.d("result", "登录失败" + task.getException().toString());
        }
    }
});

注销一个用户

更新之前:

ref.unauth();

更新之后:

mauth.signOut();

监控身份验证状态

更新之前:

wilddog.addAuthStateListener(new Wilddog.AuthStateListener() {
    @Override
    public void onAuthStateChanged(AuthData authData) {
        if (authData != null) {
            Log.d("authStatus", "current user id is" + authData.getUid());
        } else {
            Log.d("authStatus", "current user is null");
        }
    }
});

更新之后:

mauth.addAuthStateListener(new WilddogAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(WilddogAuth wilddogauth) {
        WilddogUser user = wilddogauth.getCurrentUser();

        if (user != null) {
            Log.d("onAuthStateChanged", "success" + ":" + user.getUid());
        } else {
            // No user is signed in.
            Log.d("onAuthStateChanged", "current user is null");

        }
    }
});

更新 Sync 部分代码

写数据

更新之前:

wilddog.setValue("Hello Wilddog!")

更新之后:

SyncReference ref = WilddogSync.getInstance().getReference();
ref.setValue("Hello Wilddog!");

删除数据

wilddog.removeValue("Hello Wilddog!")

更新之后:

SyncReference ref = WilddogSync.getInstance().getReference();
ref.removeValue("Hello Wilddog!");

监听数据

更新之前:

wilddog.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                    if(dataSnapshot!=null && dataSnapshot.getValue()!=null){
                        Log.d("onDataChange","result:"+dataSnapshot.getValue().toString())  ;
                    }
            }

            @Override
            public void onCancelled(SyncError error) {

            }
        });

更新之后:

SyncReference ref = WilddogSync.getInstance().getReference();
ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                    if(dataSnapshot!=null && dataSnapshot.getValue()!=null){
                        Log.d("onDataChange","result:"+dataSnapshot.getValue().toString())  ;
                    }
            }

            @Override
            public void onCancelled(SyncError error) {

            }
        });

更多关于新版 Auth API,请参考 使用指南

R