diff --git a/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs b/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs
index 1781289c..4684dc78 100644
--- a/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs
@@ -29,6 +29,11 @@ internal static class CoreEnvironment
///
public const string HoyolabMobileUA = $"Mozilla/5.0 (Linux; Android 12) Mobile miHoYoBBS/{HoyolabXrpcVersion}";
+ ///
+ /// Hoyolab iPhone 移动端请求UA
+ ///
+ public const string HoyolabOsMobileUA = "Mozilla/5.0 (iPhone; CPU iPhone OS 16_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBSOversea/2.28.0";
+
///
/// 米游社 Rpc 版本
///
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Binding/User/User.cs b/src/Snap.Hutao/Snap.Hutao/Model/Binding/User/User.cs
index b82c61fc..784ff099 100644
--- a/src/Snap.Hutao/Snap.Hutao/Model/Binding/User/User.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Binding/User/User.cs
@@ -106,7 +106,7 @@ internal sealed class User : ObservableObject
User user = new(inner);
bool isOk = false;
- // TODO: need a flag to indentify hoyoverse account
+ // TODO: need a flag to identify hoyoverse account
if (user.Entity.Stoken != null)
{
isOk = await user.InitializeCoreAsync(token).ConfigureAwait(false);
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteNotifier.cs b/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteNotifier.cs
index 69f168ce..619d007f 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteNotifier.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteNotifier.cs
@@ -62,7 +62,7 @@ internal sealed class DailyNoteNotifier
string? attribution = SH.ServiceDailyNoteNotifierAttribution;
- // TODO: need a flag to indentify hoyoverse account
+ // TODO: need a flag to identify hoyoverse account
// For global server, stoken is null
if (entry.User.Stoken == null)
{
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Dialog/SignInWebViewDialog.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Dialog/SignInWebViewDialog.xaml.cs
index 175a6e8f..44c3d0e7 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Dialog/SignInWebViewDialog.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/View/Dialog/SignInWebViewDialog.xaml.cs
@@ -47,9 +47,19 @@ internal sealed partial class SignInWebViewDialog : ContentDialog
return;
}
- coreWebView2.SetCookie(user.CookieToken, user.Ltoken, null).SetMobileUserAgent();
- signInJsInterface = new(coreWebView2, scope.ServiceProvider);
- coreWebView2.Navigate("https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?act_id=e202009291139501");
+ // TODO: need a flag to identify hoyoverse account
+ if (user.Stoken == null)
+ {
+ coreWebView2.SetCookie(user.CookieToken, user.Ltoken, null).SetOsMobileUserAgent();
+ signInJsInterface = new(coreWebView2, scope.ServiceProvider);
+ coreWebView2.Navigate("https://act.hoyolab.com/ys/event/signin-sea-v3/index.html?act_id=e202102251931481&hyl_presentation_style=fullscreen");
+ }
+ else
+ {
+ coreWebView2.SetCookie(user.CookieToken, user.Ltoken, null).SetMobileUserAgent();
+ signInJsInterface = new(coreWebView2, scope.ServiceProvider);
+ coreWebView2.Navigate("https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?act_id=e202009291139501");
+ }
}
private void OnContentDialogClosed(ContentDialog sender, ContentDialogClosedEventArgs args)
diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Bridge/CoreWebView2Extension.cs b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/CoreWebView2Extension.cs
index 3decfd09..c32bd1ab 100644
--- a/src/Snap.Hutao/Snap.Hutao/Web/Bridge/CoreWebView2Extension.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/CoreWebView2Extension.cs
@@ -23,6 +23,17 @@ internal static class CoreWebView2Extension
return webView;
}
+ ///
+ /// 设置 移动端UA
+ ///
+ /// webview2
+ /// 链式调用的WebView2
+ public static CoreWebView2 SetOsMobileUserAgent(this CoreWebView2 webView)
+ {
+ webView.Settings.UserAgent = Core.CoreEnvironment.HoyolabOsMobileUA;
+ return webView;
+ }
+
///
/// 设置WebView2的Cookie
///
diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Event/Calculate/CalculateClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Event/Calculate/CalculateClient.cs
index 940ee413..65ae7028 100644
--- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Event/Calculate/CalculateClient.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Event/Calculate/CalculateClient.cs
@@ -44,7 +44,7 @@ internal sealed class CalculateClient
public async Task> ComputeAsync(Model.Entity.User user, AvatarPromotionDelta delta, CancellationToken token = default)
{
Response? resp;
- // TODO: need a flag to indentify hoyoverse account
+ // TODO: need a flag to identify hoyoverse account
if (user.Stoken == null)
{
resp = await httpClient