v1.3.0 -
#
- 設定項目はAndroid/iOSプラットフォーム固有のKey-value storeに保存する(
IPreferencesService)
- 接触情報はJSON形式に変換後、
SecureStorageServiceを通じて暗号化された状態で格納されている
- 日付情報はUNIX Epoch(e.g.
1592528400)
保存内容
#
IPreferencesService
#
| キー |
形式 |
保存内容 |
| AppVersion |
文字列 |
Preferenceが対応しているアプリのバージョン(e.g. 1.3.0) |
| StartDateTimeEpoch |
数値(long) |
利用開始日時のUNIX Epoch(e.g. 1592528400) |
| TermsOfServiceLastUpdateDateTimeEpoch |
数値(long) |
利用規約に合意した日時のUNIX Epoch(e.g. 1592528400) |
| PrivacyPolicyLastUpdateDateTimeEpoch |
数値(long) |
プライバシーポリシーに合意した日時のUNIX Epoch(e.g. 1592528400) |
| ExposureNotificationConfiguration |
文字列 |
JSON形式に変換されたXamarin.ExposureNotifications.Configuration |
| LastProcessTekTimestamp |
文字列 |
JSON形式に変換されたDictionary<string, long> キーはRegion(e.g. 440)、数値はTEKのタイムスタンプ(e.g. 1632551138) |
| CanConfirmExposure |
Boolean |
最後に試行した接触確認(診断キーのダウンロード・接触確認実行)が正常に完了したことを示すフラグ |
| LastConfirmedDateTimeEpoch |
数値(long) |
最後に接触確認を完了した日時のUNIX Epoch(e.g. 1592528400) |
ISecureStorageService
#
| キー |
形式 |
保存内容 |
| ExposureSummary |
文字列 |
JSON形式に変換されたUserDataModel.ExposureSummary |
| ExposureInformation |
文字列 |
JSON形式に変換されたObservableCollection<UserExposureInfo> |
v1.2.2 - v1.2.6
#
- Application.PropertiesからPreferenceServiceへのマイグレーション
- 設定項目はAndroid/iOSプラットフォーム固有のKey-value storeに保存する(
IPreferencesService)
- 接触情報はJSON形式に変換後、
SecureStorageServiceを通じて暗号化された状態で格納されている
- 日付情報はDateTimeをToString()した結果(e.g.
2020/06/19 10:00:00)
- 確認されている不具合
- 日付情報の文字列変換時にフォーマットを指定していないため、日時を保存後に端末に設定されている地域や言語が変わった場合、ただしく日付が復元できなくなることがある
- v1.1.5より前のバージョンで利用規約に合意していた(
UserDataModel.IsOptinedがtrue)場合、TermsOfServiceLastUpdateDateTimeの値に 0001/01/01 00:00:00が設定される。これは厳密には不具合ではなく仕様
- v1.1.5より前のバージョンでプライバシーポリシーに合意していた(
UserDataModel.IsPolicyAcceptedがtrue)ていて、v1.2.0でプライバシーポリシーの再同意を経ていない場合、PrivacyPolicyLastUpdateDateTimeの値に 0001/01/01 00:00:00が設定される。これは厳密には不具合ではなく仕様
保存内容
#
IPreferencesService
#
| キー |
形式 |
保存内容 |
| StartDateTime |
文字列 |
利用開始日時(UTC) - 2020/06/19 10:00:00 |
| TermsOfServiceLastUpdateDateTime |
文字列 |
利用規約に合意した日時(JST) - 2020/06/19 10:00:00 |
| PrivacyPolicyLastUpdateDateTime |
文字列 |
プライバシーポリシーに合意した日時(JST) - 2020/06/19 10:00:00 |
| LastProcessTekTimestamp |
文字列 |
JSON形式に変換されたDictionary<string, long> キーはRegion(e.g. 440)、数値はTEKのタイムスタンプ(e.g. 1632551138) |
ISecureStorageService
#
| キー |
形式 |
保存内容 |
| ExposureSummary |
文字列 |
JSON形式に変換されたUserDataModel.ExposureSummary |
| ExposureInformation |
文字列 |
JSON形式に変換されたObservableCollection<UserExposureInfo> |
v1.2.0 - v1.2.1
#
- Application.Propertiesに保存(
IApplicationPropertyService)
- Xamarin.Forms固有のファイル永続化方式
- 実体ファイルはBinary XML形式
- 設定項目と接触情報は UserDataModel を、JSON形式に変換して保存されている
- 日付情報はDateTimeをToString()した結果(e.g.
2020/06/19 10:00:00)
- 確認されている不具合
- Application.Propertiesの特性上、複数スレッドから書き込みをするとデータが壊れる事象が発生
- Androidのバックグラウンド処理時に設定の読み書きができない事象が発生
- 仕様上、Xamarin.Formsが初期化されていないタイミングではApplication.Propertiesにアクセスできない
- 日付情報の文字列変換時にフォーマットを指定していないため、日時を保存後に端末に設定されている地域や言語が変わった場合、ただしく日付が復元できなくなることがある
- v1.1.5より前のバージョンで利用規約に合意していた(
UserDataModel.IsOptinedがtrue)場合、TermsOfServiceLastUpdateDateTimeのキーは作成されない。これは厳密には不具合ではなく仕様
- v1.2.0からv1.2.1が運用されている期間内に、利用規約の再同意プロセスが利用されたことがないため
保存内容
#
| キー |
形式 |
保存内容 |
| UserData |
文字列 |
JSON形式に変換されたUserDataModel |
| TermsOfServiceLastUpdateDateTime |
文字列 |
利用規約に合意した日時(JST) - 2020/06/19 10:00:00 |
| PrivacyPolicyLastUpdateDateTime |
文字列 |
プライバシーポリシーに合意した日時(JST) - 2020/06/19 10:00:00 |
public class UserDataModel
{
public DateTime StartDateTime { get; set; }
public bool IsOptined { get; set; } = false;
public bool IsPolicyAccepted { get; set; } = false;
public Dictionary<string, long> LastProcessTekTimestamp { get; set; } = new Dictionary<string, long>();
public ObservableCollection<UserExposureInfo> ExposureInformation { get; set; } = new ObservableCollection<UserExposureInfo>();
public UserExposureSummary ExposureSummary { get; set; }
}
v1.0.0 - v1.1.5
#
- Application.Propertiesに保存(
IApplicationPropertyService)
- Xamarin.Forms固有のファイル永続化方式
- 実体ファイルはBinary XML形式
- 設定項目と接触情報は UserDataModel を、JSON形式に変換して保存されている
- 日付情報はDateTimeをToString()した結果(e.g.
2020/06/19 10:00:00)
- 確認されている不具合
- Application.Propertiesの特性上、複数スレッドから書き込みをするとデータが壊れる事象が発生
- Androidのバックグラウンド処理時に設定の読み書きができない事象が発生
- 仕様上、Xamarin.Formsが初期化されていないタイミングではApplication.Propertiesにアクセスできない
- 日付情報の文字列変換時にフォーマットを指定していないため、日時を保存後に端末に設定されている地域や言語が変わった場合、ただしく日付が復元できなくなることがある
保存内容
#
| キー |
形式 |
保存内容 |
| UserData |
文字列 |
JSON形式に変換されたUserDataModel |
public class UserDataModel
{
public DateTime StartDateTime { get; set; }
public bool IsOptined { get; set; } = false;
public bool IsPolicyAccepted { get; set; } = false;
public Dictionary<string, long> LastProcessTekTimestamp { get; set; } = new Dictionary<string, long>();
public ObservableCollection<UserExposureInfo> ExposureInformation { get; set; } = new ObservableCollection<UserExposureInfo>();
public UserExposureSummary ExposureSummary { get; set; }
}