Smart Downloader SDKを使用するには、コンソールでサービスが有効になっていて、登録されたサービスが存在している必要があります。 詳細は、コンソール使用ガイドを参照してください。
Smart Downloader SDKはUnityエンジンをサポートします。
Assets/SmartDL
フォルダにインストールされます。Toast.SmartDownloader
に定義されています。<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">cdn.toastcloud.com</domain>
</domain-config>
</network-security-config>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>toastcdn.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
サービスを選択し、ダウンロードします。 基本的にはアップロードしたリソース全体をダウンロードしますが、一部のリソースのみ選択してダウンロードすることもできます。
ダウンロードに必要な設定を変更でき、指定されたパスやファイルのみダウンロードできます。
DownloadConfig.Default
からデフォルト値の設定を取得できます。
変数名 | 初期値 | 説明 |
---|---|---|
FixedDownloadThreadCount | -1 | ダウンロード時に使用するスレッドの数を固定 (0以下の値ならSDKで自動的に設定) |
DownloadConnectTimeout | 60 | ダウンロードの接続タイムアウト(単位:秒) |
DownloadReadTimeout | 20 | ダウンロードの読み取りタイムアウト(単位:秒) |
RetryDownloadCountPerFile | 3 | ダウンロード失敗時に再試行する回数 |
UseStreamingAssets | false | Streaming Assetsリソースと比較するかどうかの指定 |
PatchCompareFunction | PatchCompareType.INTERGRITY | リソースを検査するオプション |
ClearUnusedResources | false | 使用しないリソース除去 (現在CDNにない、以前にダウンロードしたリソースを除去) |
Example
DownloadConfig config = DownloadConfig.Default;
config.DownloadConnectTimeout = TimeSpan.FromSeconds(60);
config.DownloadReadTimeout = TimeSpan.FromSeconds(20);
config.RetryDownloadCountPerFile = 3;
config.UseStreamingAssets = false;
config.PatchCompareFunction = PatchCompareType.INTERGRITY;
config.ClearUnusedResources = false;
Streaming Assets内部のリソースとアップロードされたリソースのパスを比較して、変更されたリソースをダウンロードします。
注意
Split Application Binary
設定が有効になると、APK拡張ファイルであるOBBファイルにStreaming Assetsが含まれますが、このとき自動的にデバイスでOBBファイルを検索します。
デバイスにOBBファイルがない場合は、アップロードされたすべてのリソースをダウンロードします。(参考:Unity Manual - APK拡張ファイル対応)デフォルト設定で、リソースチェック時にダウンロードされたすべてのリソースのCRCを計算し、アップロードされたリソースと比較します。
特徴
このオプションを使用すると、ダウンロードされたリソースの基本情報をデバイスに保存して、次のスキャン時にアップロードされたリソースと比較します。
特徴
短所
このオプションを使用すると、ダウンロードされたリソースの基本情報をデバイスに保存して、次のスキャン時にアップロードされたリソースと比較し、デバイスに実際にリソースが存在するのか簡単なスキャンを行います。
特徴
短所
ダウンロード設定で、ダウンロードするリソースを選択しなかった場合、サービスに配布されたすべてのリソースをダウンロードします。
API
static void StartDownload(string appkey, string serviceName, string downPath, OnComplete callback)
static void StartDownload(string appkey, string serviceName, string downPath, DownloadConfig config, OnComplete callback)
delegate void OnComplete(DownloadResult result)
Example
SmartDl.StartDownload("Appkey", "ServiceName", "DownloadPath",
(result) =>
{
if (result.IsSuccessful)
{
// 成功コードの作成
}
else
{
// 失敗コードの作成
}
});
[ダウンロード設定]でダウンロードするリソースを選択し、該当リソースのみをダウンロードできます。 ファイルが見つからなかった場合、エラーを返します(結果コード:ERROR_EMPTY_FILE_LIST)。
ダウンロードAPIは、全リソースダウンロードを参照してください。
API
class DownloadConfig
{
void AddSpecifyPath(string path);
void RemoveSpecifyPath(string path);
void ClearSpecifyPath();
}
Example
// ユーザーが指定したファイルをダウンロードします。
// - Charactersパスの下にあるすべてのファイル
// - Maps/M01パスの下にあるすべてのファイル
// - Data/CharacterInfo.txtファイル
var downloadConfig = DownloadConfig.Default;
downloadConfig.AddSpecifyPath(@"/Characters");
downloadConfig.AddSpecifyPath(@"/Maps/M01");
downloadConfig.AddSpecifyPath(@"/Data/CharacterInfo.txt");
SmartDl.StartDownload(Appkey, ServiceName, DownloadPath, downloadConfig,
(result) =>
{
if (result.IsSuccessful)
{
// 成功コードの作成
}
else
{
// 失敗コードの作成
}
});
ダウンロード結果コールバックに渡されるタイプです。
変数名 | 説明 |
---|---|
Code | 結果コード |
IsCompleted | ダウンロード完了可否 |
Message | 結果メッセージ |
IsSuccessful | ダウンロード成功可否 |
進行中のダウンロードをキャンセルします。 StartDownloadコールバックが失敗を返します。(Result Code : USER_CANCEL)
API
static void StopDownload()
Example
void StopDownload()
{
SmartDl.StopDownload();
}
進行中のダウンロード情報はProgressInfoタイプで取得できます。
変数名 | 説明 |
---|---|
FileMap | 現在のスレッド別ダウンロード中のファイル情報を返す |
Percentage | 全体進行率を返す |
Speed | ダウンロード開始から今までのダウンロード速度を返す(単位:バイト/秒) (全体ダウンロード容量 / ダウンロード開始時間から現在時間) |
TotalReceivedBytes | 現在までダウンロードしたバイト数を返す |
TotalFileBytes | ダウンロードする必要がある全体のバイト数を返す |
CompletedFileCount | 現在までダウンロードそたファイル数を返す |
TotalFileNumber | ダウンロードする必要がある全体のファイル数を返す |
IsCompleted | ダウンロードが完了したかどうかを返す |
API
static ProgressInfo Progress;
Example
void StartDownload()
{
SmartDl.StartDownload(AppKey、ServiceName、DownloadPath、downloadConfig、OnCompleteCallback);
StartCoroutine(UpdateProgress());
}
IEnumerator UpdateProgress()
{
while (true)
{
var progress = SmartDl.Progress;
Debug.LogFormat("Percentage : {0} %"、progress.Percentage);
var threadCount = progress.FileMap.Count;
ThreadProgressContainer.Instance.ThreadCount = threadCount;
for (int i = 0; i < threadCount; i++)
{
var file = progress.FileMap[i];
Debug.LogFormat("Thread[{0}] Percentage : {1} %"、i、(file.DownloadedBytes / (float)file.TotalBytes) * 100.0f);
}
if (progress.IsCompleted)
yield break;
yield return null;
}
}
SDK内部動作のログを出力するためにSmartDlLoggerタイプを提供します。 ログレベルのデフォルト値はErrorで、ログイベントを登録しなければ何も動作をしません。
API
static LogLevel CurrentLevel = LogLevel.Error;
static event Action<LogLevel、string> OnLog;
Example
void Initialize()
{
SmartDlLogger.CurrentLevel = SmartDlLogger.LogLevel.Trace;
SmartDlLogger.OnLog += (type、log) =>
{
switch (type)
{
case SmartDlLogger.LogLevel.Trace:
case SmartDlLogger.LogLevel.Developer:
case SmartDlLogger.LogLevel.Debug:
case SmartDlLogger.LogLevel.Info:
Debug.Log(log);
break;
case SmartDlLogger.LogLevel.Warn:
Debug.LogWarning(log);
break;
case SmartDlLogger.LogLevel.Error:
Debug.LogError(log);
break;
default:
Debug.Log(log);
break;
}
};
}
Smart Downloader SDKでサポートしないAPIはDeprecate処理します。 DeprecatedされたAPIは、次の条件を満たす時、予告なしに削除されることがあります。
5回以上のマイナーバージョンアップデート
5か月経過