菜鸟教程小白 发表于 2022-12-11 18:36:58

ios - 如何使cordova ios应用程序崩溃


                                            <p><p>我正在尝试编写一小部分cordova ios 应用程序。我的要求之一是提供一个按钮/链接以允许用户使应用程序崩溃。 </p>

<p>我尝试在 CDVUIWebViewNavigationDelegate.m 中引发异常,如下所示,</p>

<pre><code>- (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL* url = ;
if()
{
    NSLog(@&#34;User crash bookmart with NSException&#34;);
    NSMutableDictionary *userInfo = ;
    NSDate *current = ;
    NSDateFormatter *dateFormatter = [ init];
    ;
    ; // Set date and time styles
    ];
    NSString *currentTime = ;
    ;
    NSException *ex = [ initWithName:@&#34;BookmartCrashException&#34; reason:@&#34;User crashed bookmart!&#34; userInfo:userInfo];
    ;
}
...
}
</code></pre>

<p>但是当我尝试时,我看到了以下日志,</p>

<blockquote>
<p>2017-09-04 17:09:57.148 HRent User crash bookmart with NSException
2017-09-04 17:09:57.149 HRent *** WebKit discarded an uncaught exception in the &gt;webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate:User crashed bookmart!</p>
</blockquote>

<p>异常已被丢弃,应用程序没有崩溃:(</p>

<p>有没有其他方法可以让应用程序崩溃?或者通过某些配置,我可以禁用 WebKit 以丢弃此类异常吗?</p>

<p>非常感谢您的回答!</p>

<p>问候
雷切尔</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>谢谢大家。
除了 Will 建议的插件外,我已经尝试了所有建议。
总的来说,有两种方法可以让应用程序崩溃。 </p>

<ol>
<li>按照 Michale 的建议,使用 abort() 终止应用程序。</li>
</ol>

<p>这是我使用的一段代码,</p>

<pre><code>- (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:
(UIWebViewNavigationType)navigationType
{
   NSURL* url = ;
   if()
   {
   abort();
   }
   ...
}
</code></pre>

<ol 开始=“2”>
<li>按照 shebuka 的建议,在主线程上调度异常。这里的诀窍是我们不能使用访问 nil 数组或除以 0 来引发此异常,但必须在我的问题中写下我的帖子。否则,应用程序不会崩溃并且不会显示日志。 </li>
</ol>

<p>这是我使用的代码片段,</p>

<pre><code>- (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:
(UIWebViewNavigationType)navigationType
{
NSURL* url = ;
if()
{
    dispatch_async(dispatch_get_main_queue(), ^{
      NSLog(@&#34;User crash bookmart with NSException&#34;);
      NSMutableDictionary *userInfo = ;
      NSDate *current = ;
      NSDateFormatter *dateFormatter = [ init];
      ;
      ; // Set date and time styles
      ];
      NSString *currentTime = ;
      ;
      NSException *ex = [ initWithName:@&#34;BookmartCrashException&#34; reason:@&#34;User crashed bookmart!&#34; userInfo:userInfo];
      ;
    });

} ...}
</code></pre>

<p>我将选择解决方案 2 导致此应用程序崩溃,但有一个更符合我要求的异常。</p>

<p>谢谢大家。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何使cordova ios应用程序崩溃,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46033876/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46033876/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何使cordova ios应用程序崩溃