私はAzure Mobile Servicesでアンドロイドアプリを実装しており、オフライン同期を実装しています。アプリは正常に動作しますが、データを同期すると完了しないようですので、同期していないテーブルには常にいくつかの行がありますか?Android Azureオフライン同期 - 同期を完了していません
誰でも問題の可能性があります。私はそれが次の試行でそれが中断したところで終わるか、または間違っていると信じていますか?事前に
おかげ
私はAzure Mobile Servicesでアンドロイドアプリを実装しており、オフライン同期を実装しています。アプリは正常に動作しますが、データを同期すると完了しないようですので、同期していないテーブルには常にいくつかの行がありますか?Android Azureオフライン同期 - 同期を完了していません
誰でも問題の可能性があります。私はそれが次の試行でそれが中断したところで終わるか、または間違っていると信じていますか?事前に
おかげ
ブルースの答えは良いですが、私はフィドラーを使用する必要がなく、わずかに異なる方法を使用しました。
私はこの
mClient = new MobileServiceClient("[AZUREWEBSITE]", cntxall).withFilter(
new ServiceFilter() {
@Override
public ListenableFuture<ServiceFilterResponse> handleRequest(ServiceFilterRequest request, NextServiceFilterCallback nextServiceFilter) {
// Get the request contents
String url = request.getUrl();
String content = request.getContent();
if (url != null) {
Log.d("Request URL:", url);
}
if (content != null) {
Log.d("Request Content:", content);
}
// Execute the next service filter in the chain
ListenableFuture<ServiceFilterResponse> responseFuture = nextServiceFilter.onNext(request);
Futures.addCallback(responseFuture, new FutureCallback<ServiceFilterResponse>() {
@Override
public void onFailure(Throwable e) {
Log.d("Exception:", e.getMessage());
}
@Override
public void onSuccess(ServiceFilterResponse response) {
if (response != null && response.getContent() != null) {
Log.d("Response Content:", response.getContent());
}
}
});
return responseFuture;
}
}
);
するために、この
mClient = new MobileServiceClient("[AZUREWEBSITE]", cntxall);
mClient.setAndroidHttpClientFactory(new MyOkHttpClientFactory());
から私の接続を変更するこれは、Azureの接続のための伐採方法で、ログ内の要求を示しています。
アプリがうまく動作しますが、データを同期するとき、そうで同期していないテーブルには、いくつかの行は常にあるが完了していないようですか?
fiddlerを使用して、同期操作を処理する際のネットワークトレースをキャプチャすることをお勧めします。 Incremental Syncについては
次のように要求は次のようになり、:
Get https://{your-app-name}.azurewebsites.net/tables/TodoItem?$filter=(updatedAt%20ge%20datetimeoffset'2017-11-03T06%3A56%3A44.4590000%2B00%3A00')&$orderby=updatedAt&$skip=0&$top=50&__includeDeleted=true
を増分同期のオプトアウトのために、あなたは、フィルタupdatedAt
せずにすべてのレコードを取得します。
注:SDKのアイテムが多すぎると、指定したクエリに一致するすべてのアイテムを関連付けられたリモートテーブルから取得するという複数の要求が送信されます。また、クエリにincludeDeleted()
を指定する必要があります。
要約すると、上記のリクエストですべてのアイテムを取得できることを確認する必要があります。さらに、プル動作が保留中のローカル更新を有する場合、プル動作は最初にプッシュ動作を実行する。だから、私は、競合解決を処理するためにプル操作を呼び出すときに例外をキャッチできると仮定します。