AndroidとiOSアプリをParse.comからParse Serverに移行しています。まず、テストアプリでこの移行を実行して、すべてが正常であることを確認します。 iOSでは問題はありませんでしたが、Androidでは、ユーザーがアプリに入るたびに更新されたアプリがクラッシュします。Parse to Parse ServerがクラッシュするAndroidスイッチ
これはAndroidのコードの更新です:
public static void initParse(Application app) {
ctxt = app.getApplicationContext();
Parse.enableLocalDatastore(app);
// Old version
//Parse.initialize(app, "<my app id>", "<my client key>");
// New version
Parse.initialize(new Parse.Configuration.Builder(ctxt)
.applicationId("<my app id>")
.clientKey(null)
.server("https://<my new server>/parse/")
.build()
);
ParseUser.enableRevocableSessionInBackground();
}
クラッシュ「com.parse.ParseException:java.lang.IllegalStateException:未保存のparseObjectとの関連付けをエンコードすることができない」を返し、考慮に入れてParseUser.getCurrentUser()が(ユーザーがログインしているにもかかわらず)nullを返し、Parseメソッドが失敗するためです。
実際に、私はこの同じコードを取ってParse.initializeの旧バージョンのコメントを外し、Parse.initializeの新しいバージョンにコメントし、コンパイルして起動します。これは問題なく起動され、ユーザーは正しく使用できます。 。
Parse.initializeの旧バージョンにコメントし、Parse.initializeの新しいバージョンのコメントを外してコンパイルしてアプリを起動すると、ParseUser.getCurrentUser()がnullを返しParseメソッドが失敗するため、クラッシュが発生します。
私はここで何が欠けていますか?ユーザーに再度ログインさせる必要がありますか?これは私には悪いUXだと思うし、とにかく、私は新しいバージョンで問題はないが、どちらのプラットフォームの違いは何ですか?このほかに、私は私の解析のバージョンは、私が持っている、最後に利用可能であることを
public static void initParse(Application app) {
ctxt = app.getApplicationContext();
Parse.enableLocalDatastore(app);
// Old version
//Parse.initialize(app, "<my app id>", "<my client key>");
// New version
Parse.initialize(new Parse.Configuration.Builder(ctxt)
.applicationId("<my app id>")
.clientKey("<my client key>")
.server("https://<my new server>/parse/")
.build()
);
//Parse.setLogLevel(Parse.LOG_LEVEL_DEBUG);
Parse.setLogLevel(Parse.LOG_LEVEL_VERBOSE);
ParseUser.enableRevocableSessionInBackground();
}
をチェックしました:私はこれに初期設定を変更したロバート・ラウントリーのアドバイスに従い
:
EDIT 1私のGradleファイルで、このします。java:
compile 'com.parse.bolts:bolts-android:1.+'
compile 'com.parse:parse-android:1.+'
、結果は「com.parse.ParseExceptionと同じ、アプリがクラッシュです.lang.IllegalStateException:保存されていないParseObjectとの関連付けをエンコードできません "最初にParseに行う呼び出し。 これ以外にも、GCMトークンに関連したパーズと関連するユニークなログはありません。
EDIT 2:私は古い初期設定でアプリをアンインストールして、新しい初期化とそれをインストールして、私は推測して、新しいバージョンが現在取り組んでいる、別のものを試してみた
。
もちろん、これは私にとっては解決策ではありませんが、ユーザーにアプリをアンインストールして再度インストールするように指示することはできません。
これはヒントです:新しい初期化に問題はありませんが、新しいParse Serverでアプリケーションを開くときに古いParseがどのように反応するかによって、getCurrentUserなどに矛盾がなければなりません。
.enableLocalDataStore()
がinitilizationである
Parse.initialize(new Parse.Configuration.Builder(this)
.applicationId("APP_ID")
.clientKey("CLIENT_KEY")
.server("https://SERVER_URL/parse/") // The trailing slash is important.
.enableLocalDataStore()
.build()
);
予告:
ParseSDKが最新版であることを確認します。 clientKeyを使って試してみてください...(nullもありません)... "Parse.setLogLevel(Parse.LOG_LEVEL_DEBUG);"詳細を追加 –
ありがとうRobert!私はその変更を加えましたが、結果は同じです。 – Wonton