title: 快速入门

你可以通过一个简单的 评论墙示例 来快速了解 Sync 的用法。

环境准备

  • 支持 Android Studio 1.4 以上
  • 支持 JDK 7.0 以上版本
  • 支持 Android 手机系统 4.0.3 以上版本,即 Android SDK 15 以上版本

1. 创建应用

首先,你需要在控制面板中创建应用。

2. 安装 SDK

SDK 的安装方式有两种,你可以任选其一:

  • 使用 Maven
  1. <dependency>
    <groupId>com.wilddog.client</groupId>
    <artifactId>wilddog-sync-android</artifactId>
    <version>2.3.7</version>
    </dependency>
  • 使用 Gradle

在build.gradle中添加:

  1. dependencies {
    compile 'com.wilddog.client:wilddog-sync-android:2.3.7'
    }

如果出现文件重复导致的编译错误,可以选择在build.grade中添加packagingOptions:

  1. android {
  2. ...
  3. packagingOptions {
  4. exclude 'META-INF/services/com.fasterxml.jackson.core.ObjectCodec'
  5. exclude 'META-INF/services/com.fasterxml.jackson.core.JsonFactory'
  6. exclude 'META-INF/maven/com.squareup.okhttp/okhttp/pom.properties'
  7. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml'
  8. exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'
  9. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml'
  10. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties'
  11. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties'
  12. exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'
  13. exclude 'META-INF/maven/com.squareup.okhttp/okhttp/pom.xml'
  14. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties'
  15. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml'
  16. exclude 'META-INF/maven/com.wilddog.client/wilddog-core-android/pom.xml'
  17. exclude 'META-INF/maven/com.wilddog.client/wilddog-core-android/pom.properties'
  18. exclude 'META-INF/maven/com.wilddog.client/wilddog-auth-android/pom.xml'
  19. exclude 'META-INF/maven/com.wilddog.client/wilddog-auth-android/pom.properties'
  20. exclude 'META-INF/NOTICE'
  21. exclude 'META-INF/LICENSE'
  22. exclude 'META-INF/notice'
  23. exclude 'META-INF/notice.txt'
  24. exclude 'META-INF/license'
  25. exclude 'META-INF/license.txt'
  26. }
  27. }

3. 配置 Android 权限

在 AndroidMainfest.xml 文件中添加:

  1. <uses-permission android:name="android.permission.INTERNET"/>
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  3. <application
  4. ...
  5. >
  6. <receiver android:name="com.wilddog.client.receiver.WilddogAuthCastReceiver">
  7. <intent-filter>
  8. <action android:name="com.wilddog.wilddogauth.signinsuccess"/>
  9. <action android:name="com.wilddog.wilddogauth.signoutsuccess"/>
  10. </intent-filter>
  11. </receiver>
  12. </application>

4. 创建 Sync 实例

  1. // 初始化
  2. WilddogOptions options = new WilddogOptions.Builder().setSyncUrl("https://<wilddog SyncAppID>.wilddogio.com").build();
  3. WilddogApp.initializeApp(this, options);
  4. SyncReference ref = WilddogSync.getInstance().getReference();

提示:

Wilddog Sync 允许同时创建多个实例。

5. 写入数据

setValue() 用于向指定节点写入数据。Sync 的数据存储格式采用 JSON

例如,在应用的根节点下写入评论数据:

  1. Comment comment = new Comment("Jack","Wilddog, Cool!");
  2. ref.child("messageboard").child("message1").setValue(comment
  3. );

写入的数据如下图:

yourApp

6. 监听数据

addValueEventListener()addListenerForSingleValueEvent() 方法用于监听 节点 的数据。

例如,从应用中获得评论数据:

  1. // dataSnapshot 里面的数据会一直和云端保持同步
  2. myRef.addValueEventListener(new ValueEventListener() {
  3. @Override
  4. public void onDataChange(DataSnapshot dataSnapshot) {
  5. if(dataSnapshot.getValue()!=null){
  6. Log.d("onDataChange",dataSnapshot.toString());
  7. }
  8. }
  9. @Override
  10. public void onCancelled(SyncError syncError) {
  11. if(syncError!=null){
  12. Log.d("onCancelled",syncError.toString());}
  13. }
  14. });
  15. // 如果你只想监听一次,那么你可以使用addListenerForSingleValueEvent()
  16. myRef.addListenerForSingleValueEvent(new ValueEventListener() {
  17. @Override
  18. public void onDataChange(DataSnapshot dataSnapshot) {
  19. if(dataSnapshot.getValue()!=null){
  20. Log.d("onDataChange",dataSnapshot.toString());
  21. }
  22. }
  23. @Override
  24. public void onCancelled(SyncError syncError) {
  25. if(syncError!=null){
  26. Log.d("onCancelled",syncError.toString());}
  27. }
  28. });

7.数据安全

你可以在 Sync 中使用规则表达式进行数据访问权限的控制。规则表达式可以实现以下功能:

  • 数据访问权限控制
  • 用户访问权限控制
  • 数据格式校验
  • 数据索引

规则表达式的具体使用,请参考 安全性与规则

注意:

初始配置下,所有人都能读写你的应用数据,请及时在 实时通信引擎-读写权限 中更改规则表达式。

8.更多使用