2016-08-19 2 views
1

私はすべてのユーザーのお気に入りをGoogleドライブに同期させる機能をプログラミングしています。この機能の全ポイントは、そのユーザーのすべてのデバイスが同期していることです。Googleドライブにファイルを同期する複数のクライアントを持つAppFolder

知ってもいいです代あります

  • は、アプリが起動時にGoogleドライブからすべてのお気に入りを引っ張ることにある、地元のお気に入りとそれらを比較します。 Googleドライブのフォルダ内にローカルストレージにないお気に入りがある場合、そのお気に入りはローカルストレージに追加され、その逆も同様です。
  • アプリはGoogleドライブAPIを使用します。

上記の最初の問題点は、クラウドとローカルストレージを比較する方法です。ユーザーがお気に入りを削除して接続が不良な場合、お気に入りはGoogleドライブで削除されません。アプリを起動するときに、同じお気に入りが再び追加されます。 オフラインではアプリを起動できないため、お気に入りをオフラインで削除することはできません。

私は、お気に入りの削除や追加、追加/削除された時間の表示、デバイスIDの何らかの種類の表示など、「変更履歴」を作成する方法を考えています。 (私は今大声で考えています)この問題は、しばらくの間アプリケーションを使用するとchangelogファイルがかなり大きくなることです(好きな追加や削除が記録されるたびに)

私が直面している問題はコードではありません同期が機能し、お気に入りを確認する必要があります。お気に入りを自分でGoogleドライブに送信しようとしましたが、それには最大限のスペースが必要です(簡単にデバッグすることはできません)。

私はこの挑戦にどのように取り組むのか、私は誰かが正しい方向を指すように指示する必要があるとは思っていません。

どのような解決策も歓迎です。

答えて

1

アプリケーションが実行されていない場合でも、ChangeEventsを受け取ることができます。たとえば、アプリケーションが実行されていないときにその変更が発生しても、気になるファイルやフォルダが変更されたときに通知が表示されることがあります。あなたは、クラスを作成する必要があり、変更、サブスクリプション・イベントを処理するには

DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient, 
mSelectedFileId); 
file.addChangeSubscription(mGoogleApiClient); 

ハンドル変更サブスクリプションのイベント

次のコード例は、ファイルへの変更のサブスクリプションを追加するために実装するかもしれないロジックを示しDriveEventServiceを拡張し、onChangeメソッドを上書きします。ここでは、ChangeEventのアプリケーション固有の処理が行われます。

public class MyDriveEventService extends DriveEventService { 

@Override 
public void onChange(ChangeEvent event) { 
Log.d(TAG, event.toString()); 
// Application-specific handling of event. 
} 

} 

これをAndroidManifestに追加します。xmlファイル

<application ...> 
    ... 
    <service android:name=".MyDriveEventService" android:exported="true"> 
     <intent-filter> 
      <action android:name="com.google.android.gms.drive.events.HANDLE_EVENT"/> 
     </intent-filter> 
    </service> 
</application> 

ファイルやフォルダをサーバからデバイスやドライブのAPIのダウンロードの変更上の別のアプリケーションによって更新されるたび、アプリケーションがChangeEventのを受け取ることになります。

またPush Notifications(ドライブ休憩API)を使用して試すことができます:

ドライブのAPIを使用すると、リソースの変更のために見てみましょうプッシュ通知を提供します。この機能を使用して、アプリケーションのパフォーマンスを向上させることができます。余分なネットワークを排除し、リソースのポーリングに伴うコストを計算して、変更されたかどうかを判断することができます。監視対象のリソースが変更されるたびに、ドライブAPIがアプリケーションに通知します。

詳細はpush notificationのブログをご覧ください。

希望すると便利です。

+0

これは私が使いたいと思う実装です!ありがとうございます。しかし、すべての変更についていく考えはありますか? – tim687

関連する問題