すべてのプロダクト
Search
ドキュメントセンター

:初期化

最終更新日:Dec 22, 2023

初期化

SDK を使用する前に、SDK で OSS サービスを取得して、署名メソッドの実装、プログラムコンテキストの転送、デフォルトのデータセンターのドメイン名の設定など、いくつかの設定を初期化する必要があります。

アプリケーションのライフサイクル全体で、OSS Android SDK を使用する前に一度これらの項目を初期化する必要があります。

1. OSS サービスの取得

OSS Android SDK ではサービス ID を使用してさまざまな機能を提供します。取得方法は次のとおりです。

OSSService ossService = OSSServiceProvider.getService();

アプリケーションのライフサイクルでは、この ossService を取得すると、OSS サービスを何回でも使用できます。

2. アプリケーションコンテキストのインポート

OSS Android SDK は動作するときにアプリケーションコンテキストを使用する必要があります。したがって、初期化の間にアプリケーションコンテキストを設定する必要があります。この操作は OSSService インターフェイスを使用して行います。コードは次のとおりです。

ossService.setApplicationContext(getApplicationContext());

この操作は最初の 1 回のみ有効であることに注意してください。後で再設定しようとしても無視されます。

3. データセンターのドメイン名の設定

OSS の公式サイトでバケットを作成するときに、単価、リクエスト元の分布、および応答のレイテンシに基づいてデータセンターを選択できます。バケットを作成するときにデータセンターを指定しないと、OSS は自動的にバケットをデフォルトのデータセンターに割り当てます。現在のデフォルトのデータセンターは oss-cn-hangzhou です。

したがって、OSS のデータ操作を実行するときは、ドメイン名を使用してバケットのデータセンターを指定する必要があります。これは次のインターフェイスを使用して行うことができます。

ossService.setGlobalDefaultHostId("oss-cn-qingdao.aliyuncs.com"); // Specifies that your bucket is placed in the Qingdao data center

このインターフェイスを呼び出してドメイン名を設定していない場合、OSS Android SDK では hostId がデフォルトで oss-cn-hangzhou.aliyuncs.com に設定されます。

4. トークンジェネレーターの設定

トークンジェネレーターの設定の詳細については、このドキュメントのアクセス制御の章を参照してください。今のところは、初期化の間にこの操作を実行する必要があることだけを憶えておけば十分です。

ossService.setAuthenticationType(AuthenticationType.ORIGIN_AKSK);
ossService.setGlobalDefaultTokenGenerator(new TokenGenerator() {
    // Requires specific implementation
});

5. カスタム参照時刻の設定

OSS トークンの検証は時刻に依存するので、モバイル端末のシステム時刻が正しくないと、ユーザーが OSS サービスにアクセスできない可能性があります。そのため、SDK の時刻を設定できるインターフェイスが用意されています。ネットワーク経由で、ビジネスサーバーから現在のエポック時刻を取得して設定できます。その後、SDK 操作の間に、時刻がサーバー時刻と同期されます。

ossService.setCustomStandardTimeWithEpochSec(int currentEpochTimeInSec); // The epoch time is counted in seconds from January 1, 1970 00:00:00 UTC

時刻では秒単位が使用されることに注意してください。

6. ネットワーク関連の設定

OSS Android SDK が OSS リソースに対して実行する操作はすべて、ネットワークリクエストを使用して実行されます。そのため、ほとんどの場合、関連するネットワークパラメーターの設定が必要になります。これは、次の例に示すように ClientConfiguration を使用して行うことができます。

ClientConfiguration conf = new ClientConfiguration();
conf.setConnectTimeout(15 * 1000); // Sets the connection establishment timeout time, default: 30s
conf.setSocketTimeout(15 * 1000); // Sets the socket timeout time, default: 30s
conf.setMaxConnections(50); // Sets the global maximum number of concurrent connections, default: 50
conf.setMaxConcurrentTaskNum(10); // Sets the global maximum number of concurrent tasks, default: 10
ossService.setClientConfiguration(conf);

7. 初期化の概要

初期化でこれらの設定を構成する場合、コードの初期化セクションは次のようになります。

OSSService ossService = OSSServiceProvider.getService();

ossService.setApplicationContext(getApplicationContext());
ossService.setGlobalDefaultHostId("oss-cn-hangzhou.aliyuncs.com");
ossService.setAuthenticationType(AuthenticationType.ORIGIN_AKSK);
ossService.setGlobalDefaultTokenGenerator(new TokenGenerator() {
    // Requires specific implementation
});
ossService.setCustomStandardTimeWithEpochSec(currentEpochTimeInSec); // The epoch time is counted in seconds from January 1, 1970 00:00:00 UTC

ClientConfiguration conf = new ClientConfiguration();
conf.setConnectTimeout(15 * 1000); // Sets the connection establishment timeout time, default: 30s
conf.setSocketTimeout(15 * 1000); // Sets the socket timeout time, default: 30s
conf.setMaxConnections(50); // Sets the global maximum number of concurrent connections, default: 50
conf.setMaxConcurrentTaskNum(10); // Sets the global maximum number of concurrent tasks, default: 10
ossService.setClientConfiguration(conf);