我的 Xamarin 项目在启动时运行了一个简单的令牌识别检查,我认为这是它被阻止的地方。奇怪的是,它只会在长时间未打开后崩溃,例如 24 小时后。没有显示错误并且崩溃不是致命的,因为您仍然可以看到它在后台运行,但它不会启动。一旦发生此初始错误,并且应用程序从后台删除,它就会启动并正常运行。[我之前发布了一个类似(可能相同)的问题][1],但是当发生这种情况时,它会导致崩溃以及崩溃报告。更改 iOS 链接器设置后,它停止了“崩溃”。[启动时执行的代码也可以在代码审查线程中看到。][2] 我不明白为什么会这样,令牌绝对不会过期,因为它们被设置为在发行后 14 天过期。我将 Azure 用于所有后端,Web API 是一个托管在免费测试 Web 托管计划上的 ASP.NET 项目。
崩溃日志:
Exception Type: EXC_BAD_ACCESS (SIGABRT)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
VM Region Info: 0 is not in any region. Bytes before following region: 4336173056
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
__TEXT 000000010274c000-0000000102794000 [ 288K] r-x/r-x SM=COW ...co.Mobile.iOS
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001be530df0 __pthread_kill + …Run Code Online (Sandbox Code Playgroud) 我试图禁用任何双击功能,在这种情况下,要禁用双击instagram图片以使其喜欢的功能。我已经测试了一些JavaScript作为chrome扩展,并为我提供了所需的结果,但是当我将其带入Xamarin WebView时,它不起作用。奇怪的是,注入的JavaScript正在运行,因为如果其中有警报,则会显示该警报。它仍然喜欢Instagram上的图像。
这是Chrome扩展程序的JavaScript
document.addEventListener("dblclick",handler,true);function handler(e) {
e.stopPropagation();
e.preventDefault(); }
Run Code Online (Sandbox Code Playgroud)
这是Xamarin的代码
string function = "document.addEventListener(\"dblclick\",handler,true);function handler(e){e.stopPropagation();e.preventDefault();}";
Xamarin.Forms.Device.BeginInvokeOnMainThread(() => { webBrowser.Eval(function); });
Run Code Online (Sandbox Code Playgroud)
更新:经过一些测试,我只能在运行网站的移动版本时确认这是一个问题。我不确定这是否与事件的触发方式或与此相关的事情有关,但这仅与移动设备有关。