using System;
using Shared;
using HDL_ON.UI.CSS;
using System.Net;
using System.Text;
using HDL_ON.DAL.Server;
using System.Threading.Tasks;
namespace HDL_ON.UI
{
///
/// 关于页面
///
public class AboutOnPage : FrameLayout
{
///
///
///
FrameLayout bodyView;
///
/// 版本更新ListCellView
///
ListCellView versionUpdateView;
///
/// 新版本的版本号,查询到新版本才赋值
///
string newAppVersion;
///
/// 新版本的下载地址
/// iOS 默认为苹果商店地址
/// Android 云端返回地址
///
string newAppVersionUrl = "";
///
///
///
public AboutOnPage()
{
bodyView = this;
}
///
///
///
public void LoadPage()
{
new TopViewDiv(bodyView, Language.StringByID(StringId.About)).LoadTopView();
Button btnOnIcon = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealWidth(106),
Width = Application.GetRealWidth(58),
Height = Application.GetRealWidth(58),
UnSelectedImagePath = "OnIcon.png",
};
bodyView.AddChidren(btnOnIcon);
Button btnOnTitle = new Button()
{
//Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealWidth(184),
Height = Application.GetRealWidth(28),
TextAlignment = TextAlignment.Center,
Text = "ON+",
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
IsBold = true,
};
bodyView.AddChidren(btnOnTitle);
#if DEBUG
btnOnIcon.MouseUpEventHandler += (sender, e) =>
{
ESOnVideo.Current.Test();
};
btnOnTitle.MouseUpEventHandler += (sender, e) =>
{
ESOnVideo.Current.Test(false);
};
#endif
Button btnOnVersion = new Button()
{
Y = btnOnTitle.Bottom,
Height = Application.GetRealWidth(25),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = Language.StringByID(StringId.VersionNumber) + " " + MainPage.VersionString,
};
bodyView.AddChidren(btnOnVersion);
var lineView = new FrameLayout()
{
Y = Application.GetRealHeight(281),
Height = Application.GetRealHeight(1),
BackgroundColor = CSS_Color.DividingLineColor,
};
bodyView.AddChidren(lineView);
#region 功能介绍
var functionView = new ListCellView()
{
Y = lineView.Bottom,
};
bodyView.AddChidren(functionView);
functionView.BtnTilte.TextID = StringId.FunctionIntroduced;
Action functionAction = () =>
{
var mPage = new FunctionIntroductionPage();
MainPage.BasePageView.AddChidren(mPage);
mPage.LoadPage();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
functionView.GoAction = functionAction;
#endregion
#region 投诉
var complaintsView = new ListCellView()
{
Y = functionView.Bottom,
};
bodyView.AddChidren(complaintsView);
complaintsView.BtnTilte.TextID = StringId.Complaints;
Action complaintsAction = () =>
{
var mPage = new ComplaintsPage();
MainPage.BasePageView.AddChidren(mPage);
mPage.LoadPage();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
complaintsView.GoAction = complaintsAction;
#endregion
#region 版本更新
versionUpdateView = new ListCellView()
{
Y = complaintsView.Bottom,
};
bodyView.AddChidren(versionUpdateView);
versionUpdateView.BtnTilte.TextID = StringId.VersionUpdate;
Action versionUpdateAction = () =>
{
OpenUrl();
//TestDDDDD();
//HDLCommon.Current.CheckIfNeedForceUpdate();
};
versionUpdateView.GoAction = versionUpdateAction;
#endregion
CheckIfNeedUpdateAsync();
}
///
/// 判断是否需要调整新版本下载地址
///
void OpenUrl()
{
if (!string.IsNullOrEmpty(newAppVersion))
{
HDLUtils.OpenUrl(newAppVersionUrl);
}
else
{
Utlis.ShowTip(Language.StringByID(StringId.IsLatestVersion));
}
}
///
/// 检测是否需要更新
/// Android等接口实现
///
///
void CheckIfNeedUpdateAsync(bool isTip = false)
{
new System.Threading.Thread(() =>
{
newAppVersion = CanUpdateAsync();
Application.RunOnMainThread(() =>
{
if (!string.IsNullOrEmpty(newAppVersion))
{
//发现新版本
versionUpdateView.BtnSubtitle.TextColor = CSS_Color.MainColor;
versionUpdateView.BtnSubtitle.Text = Language.StringByID(StringId.DiscoverNewVersion) + "(" + newAppVersion + ")";
}
else
{
//已经是最新版本
versionUpdateView.BtnSubtitle.TextColor = CSS_Color.PromptingColor1;
versionUpdateView.BtnSubtitle.Text = Language.StringByID(StringId.IsLatestVersion);
}
});
})
{ IsBackground = true }.Start();
}
///
/// 检查版本
///
///
string CanUpdateAsync()
{
#if __IOS__
try
{
var versionResult = RequestHttpsiOSAppVersionAsync();
if (versionResult == null || versionResult.Results == null)
{
return "";
}
var results = Newtonsoft.Json.Linq.JArray.Parse(versionResult.Results.ToString());
if (results[0] == null)
{
return "";
}
var newVersion = results[0]["version"]?.ToString();
//var updateContent = results[0]["releaseNotes"]?.ToString();
if (newVersion.CompareTo(MainPage.VersionString) > 0)
{
newAppVersionUrl = Constant.URL_APPSTORE;
return newVersion;
}
return "";
}
catch
{
return "";
}
#else
try
{
var versionResult = CheckAppVersion();
if (versionResult == null)
{
return "";
}
var newVersion = versionResult.version;
if (newVersion.CompareTo(MainPage.VersionString) > 0)
{
newAppVersionUrl = versionResult.androidUrl;
return newVersion;
}
return "";
}
catch (Exception ex)
{
return "";
}
#endif
}
#if __IOS__
///
/// 获取iOS-APP版本信息
///
/// The https app version async.
ResultPack RequestHttpsiOSAppVersionAsync()
{
try
{
var webClient = new WebClient { };
var result = webClient.DownloadData("https://itunes.apple.com/cn/lookup?id=1532353432");
if (result == null)
{
return null;
}
return Newtonsoft.Json.JsonConvert.DeserializeObject(Encoding.UTF8.GetString(result));
}
catch
{
return null;
}
}
//#else
#endif
///
/// 检测新版本
///
/// The https app version async.
private AppVersionRes CheckAppVersion()
{
try
{
var result = new HttpServerRequest().CheckAppVersion();
if (result.Code == StateCode.SUCCESS)
{
if (result.Data == null)
{
return null;
}
var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject(result.Data.ToString());
return responeData;
}
return null;
}
catch (Exception ex)
{
return null;
}
}
int updateType = 0;
void TestDDDDD()
{
updateType = 1;
UpdateDialogInfo forceUpdateInfo = new UpdateDialogInfo()
{
UpdateType = updateType,
NewVersionUrl = Constant.URL_APPSTORE,
NewVersion = "1.0.0925",
ReasonStr = "1、首页全新改版设计,UI更清晰 \n2、修复BUG \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能"
};
HDLCommon.Current.ShowForceUpdateDialog(forceUpdateInfo);
}
}
///
/// 苹果商店查询响应包格式
///
[System.Serializable]
public class ResultPack
{
public int ResultCount { get; set; }
public object Results { get; set; }
}
}