编辑:对于那些想知道SDK是什么的人来说,它是Flurry的中文克隆,==>> Umeng。
编辑2:在那个奇怪的SDK中实际上有一个禁用崩溃日志处理选项,这将使我的 uncaughtExceptionHandler 再次被调用。但我仍然非常感兴趣的是SDK首先是如何做到的。
我正在玩一些第三方iOS分析SDK。奇怪的发现:
最初(在我添加SDK之前),我的appDelegate.m中有一个 UncaughtExceptionHandler 。它工作正常。每当在真实的iDevice上进行测试时发生异常,它就会将一些日志打印到控制台。
//Worked like charm before I added that weird analytics SDK
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
然后我添加了奇怪的分析SDK(我所做的就是将.a lib放到我的项目中并向我的appDelegate.m添加一行,如下所述),然后突然,我的 uncaughtExceptionHandler < / strong>永远不会被召唤。
//To make sure my uncaughtExceptionHandler was not set a second time by that SDK,
//I set and reset again, before and after I initialized that weird SDK
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
[WeirdAnalyticsSDK startWithAppkey:@"XXX_XXX_XXX_XXX"];
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
事实证明,无论我做什么,只要我在appDelegate中初始化该SDK,我的 uncaughtExceptionHandler 就会在发生异常时被调用。
是的,有人能帮帮我吗?究竟是什么奇怪的SDK对我的 uncaughtExceptionHandler ?做了什么答案 0 :(得分:0)
这可能是因为您的WeirdAnalyticsSDK
向服务器发送了崩溃报告,overridse
发送了uncaughtExceptionHandler
。
使用hockeyapp SDK
时发生在我身上。我在调试模式下忽略了sdk的init行,一切正常。
您还应该检查WeirdAnalyticsSDK
是否有enable debug mode
个标记。
答案 1 :(得分:0)
好的,我们应该挂钩第三个SDK使用的处理程序。
```
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//register the third sdk
// save the handler by the third SDK
_previousHandler = NSGetUncaughtExceptionHandler();
// setting the handler for yourself
NSSetUncaughtExceptionHandler (&UncaughtExceptionHandlerMaple);
}
void UncaughtExceptionHandlerMaple(NSException *exception) {
//handle yourself logic for the exception
//code ...
//recover the third sdk's exception handle
_previousHandler(exception);
}
```
答案 2 :(得分:-1)
我也有这个问题。
您只需在任意一次电话<?php
class Login extends MY_Controller{
public function index()
{
$this->load->helper('form');
$this->load->view('public/admin_login');
}
public function admin_login()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('username','User Name','required|alpha|trim');
$this->form_validation->set_rules('password','Password','required');
$this->form_validation->set_error_delimiters("<p class='text-danger'>","</php>");
if($this->form_validation->run() )
{
$username = $this->input->post('username');
$password = $this->input->post('password');
$this->load->model('loginmodel');
$login_id = $this->loginmodel->login_valid($username , $password);
if($login_id)
{
$this->session->set_userdata('user_id','login_id');
return redirect('admin/dashboard');
}
else
{
echo "password dont match";
}
}
else
{
$this->load->view("public/admin_login");
}
}
}
之后调用NSSetUncaughtExceptionHandler
即可。这是示例代码。
NSSetUncaughtExceptionHandler