前回、RealmサーバーにiOSで作成したアプリと同期が取れている事を確認しました。
今回はAndroidアプリを作成し、iOS->Realmサーバー->Androidで同期を取ってみたいと思います。
今回はAndroidアプリを作成し、iOS->Realmサーバー->Androidで同期を取ってみたいと思います。
とりあえず今回はログインまでをやってみます。
Androidアプリ開発準備
開発環境
Android Studio 2.2.2
プロジェクト作成&Realmインストール
まずはプロジェクトを作成。minSdkVersionは
19
、targetSdkVersionは23
、Activity追加ではEmpty Activityを選択しました。
早速
Realm
をインストールしていきます。
まずはトップにある
build.gradle
のdependenciesに↓を追加。dependencies {
classpath "io.realm:realm-gradle-plugin:2.0.2"
}
次に
app/build.gradle
に↓を追加します。apply plugin: 'realm-android'
realm {
syncEnabled = true
}
※
syncEnabled = true
にしないとObjectServer
関連が使えないので注意!!
最後に
Realmがインストールされます。
build.gradle
を修正した際に右上に表示されるSync Nowをクリック。Realmがインストールされます。
ログイン画面作成
Realmサーバーにログインするまでを実装してみたいと思います。
- Applicationクラス作成
Realm関係の初期化を行う為に
クラスを作成します。今回は
Applicationクラス
を継承したクラスを作成します。今回は
MyApplicationクラス
にします。
作成したMyApplicationクラスの
onCreate
を以下のようにオーバーライドします。public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
}
}
次に
AndroidManifest.xml
にandroid:name=".MyApplication"
を追加します。<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:name=".MyApplication" // ☆ここ
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
・・・
</activity>
</application>
とりあえず今回は
MainActivity
のonCreate
でログイン処理を実施します。public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// [1]
Credentials creds = Credentials.usernamePassword("ユーザー名", "パスワード", false);
String authUrl = "http://10.0.2.2:9080/auth"; // [2]
User.Callback callback = new User.Callback() {
@Override
public void onSuccess(User user) {
Log.i(TAG, "Login success.");
}
@Override
public void onError(ObjectServerError error) {
String errorMsg;
switch (error.getErrorCode()) {
case UNKNOWN_ACCOUNT:
errorMsg = "Account does not exists.";
break;
case INVALID_CREDENTIALS:
errorMsg = "User name and password does not match";
break;
default:
errorMsg = error.toString();
}
Log.e(TAG, errorMsg);
}
};
User.loginAsync(creds, authUrl, callback);
}
}
[1]の
falseにするとログインになります。
usernamePassword
メソッド第三引数をtrueにするとユーザー新規作成falseにするとログインになります。
[2]で
これはエミュレータ上で
する必要がある為、このIPアドレスにしています。
http://10.0.2.2:9080/auth
としてますが、これはエミュレータ上で
localhost
にアクセスするには10.0.2.2
にする必要がある為、このIPアドレスにしています。
この状態で
ログに「Login success.」が表示されればOKです。
Realm Object Server
を立ち上げて実行し、ログに「Login success.」が表示されればOKです。
0 件のコメント:
コメントを投稿