• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-11 18:36:58 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

- (BOOL)webViewUIWebView*)theWebView shouldStartLoadWithRequestNSURLRequest*)request navigationTypeUIWebViewNavigationType)navigationType
{
 NSURL* url = [request URL];
if([url.path containsString"CRASH"])
{
    NSLog(@"User crash bookmart with NSException");
    NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
    NSDate *current = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; // Set date and time styles
    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
    NSString *currentTime = [dateFormatter stringFromDate:current];
    [userInfo setObject"Crash Time" forKey:currentTime];
    NSException *ex = [[NSException alloc] initWithName"BookmartCrashException" reason"User crashed bookmart!" userInfo:userInfo];
    [ex raise];
}
...
}

但是当我尝试时,我看到了以下日志,

2017-09-04 17:09:57.148 HRent[96124:12077045] User crash bookmart with NSException 2017-09-04 17:09:57.149 HRent[96124:12077045] *** WebKit discarded an uncaught exception in the >webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: User crashed bookmart!

异常已被丢弃,应用程序没有崩溃

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

非常感谢您的回答!

问候 雷切尔



Best Answer-推荐答案


谢谢大家。 除了 Will 建议的插件外,我已经尝试了所有建议。 总的来说,有两种方法可以让应用程序崩溃。

  1. 按照 Michale 的建议,使用 abort() 终止应用程序。

这是我使用的一段代码,

- (BOOL)webViewUIWebView*)theWebView shouldStartLoadWithRequestNSURLRequest*)request navigationType:
(UIWebViewNavigationType)navigationType
{
   NSURL* url = [request URL];
   if([url.path containsString"CRASH"])
   {
     abort();
   }
   ...
 } 
  1. 按照 shebuka 的建议,在主线程上调度异常。这里的诀窍是我们不能使用访问 nil 数组或除以 0 来引发此异常,但必须在我的问题中写下我的帖子。否则,应用程序不会崩溃并且不会显示日志。

这是我使用的代码片段,

- (BOOL)webViewUIWebView*)theWebView shouldStartLoadWithRequestNSURLRequest*)request navigationType:
(UIWebViewNavigationType)navigationType
{
NSURL* url = [request URL];
if([url.path containsString"CRASH"])
{
    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"User crash bookmart with NSException");
        NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
        NSDate *current = [NSDate date];
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
        [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; // Set date and time styles
        [dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
        NSString *currentTime = [dateFormatter stringFromDate:current];
        [userInfo setObject"Crash Time" forKey:currentTime];
        NSException *ex = [[NSException alloc] initWithName"BookmartCrashException" reason"User crashed bookmart!" userInfo:userInfo];
        [ex raise];
    });

} ...}

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

谢谢大家。

关于ios - 如何使cordova ios应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46033876/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap