cordova appsFlyer 应用程序第一次崩溃

Posted

技术标签:

【中文标题】cordova appsFlyer 应用程序第一次崩溃【英文标题】:cordova appsFlyer app crash first time 【发布时间】:2016-04-13 06:34:43 【问题描述】:

我正在开发 Ionic app 并且我正在使用 appsFlyer cordova 插件,但不知何故每当用户第一次打开应用程序时(我的意思是每当应用程序第一次安装在设备 )它给出错误和其他后续过程中断。

错误:

2016-04-13 11:38:44.047 WotNow[1730:35993] bool _WebTryThreadLock(bool), 0x7fd5450b4170: Tried to obtain the web lock from a thread other than the main thread or the web thread. This may be a result of calling to UIKit from a secondary thread. Crashing now...
1   0x10878b70b WebThreadLock
2   0x1016d9b04 -[UIWebView stringByEvaluatingjavascriptFromString:]
3   0x1008c6720 -[AppsFlyerPlugin onConversionDataReceived:]
4   0x100a46a8c __53-[AppsFlyerTracker handleConversionDataWithDelegate:]_block_invoke182
5   0x1093c6b49 __75-[__NSURLSessionLocal taskForClass:request:uploadFile:bodyData:completion:]_block_invoke
6   0x1093d90f2 __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke
7   0x1056b6630 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__
8   0x1055f1805 -[NSBlockOperation main]
9   0x1055d4725 -[__NSOperationInternal _start:]
10  0x1055d4336 __NSOQSchedule_f
11  0x1063143eb _dispatch_client_callout
12  0x1062fa82c _dispatch_queue_drain
13  0x1062f9d4d _dispatch_queue_invoke
14  0x1062fc996 _dispatch_root_queue_drain
15  0x1062fc405 _dispatch_worker_thread3
16  0x1066514de _pthread_wqthread
17  0x10664f341 start_wqthread

而在 xcode 中,它会将下面的代码高亮显示为错误。

XCODE 错误代码:

-(void)onConversionDataReceived:(NSDictionary*) installData 
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:installData
                                            options:0
                                            error:&error];
    if (jsonData) 
        NSString *JSONString = [[NSString alloc] initWithBytes:[jsonData bytes] length:[jsonData length] encoding:NSUTF8StringEncoding];
        [[super webView] stringByEvaluatingJavaScriptFromString: [NSString stringWithFormat:@"javascript:window.plugins.appsFlyer.onInstallConversionDataLoaded(%@)", JSONString]];

     else 
        NSLog(@"%@",error);
    

我不太了解 Objective-cios 错误,所以如果有人能告诉我应该在哪里查看以及我应该添加什么代码来解决此类问题,这将非常有帮助。

【问题讨论】:

这是一个线程相关的问题,一个 UIKit 方法,来自主线程以外的线程,这是不允许的。 @AnshaD 我需要解决什么问题或更改代码吗? dispatch_async(dispatch_get_main_queue(), ^ // 在这里做你的代码 ); @AnshaD 是的,我之前确实尝试过 dispatch_async,但它会挂起应用程序几秒钟。 你检查我的答案了吗? 【参考方案1】:

试试这个

 -(void)onConversionDataReceived:(NSDictionary*) installData 
            NSError *error;
            NSData *jsonData = [NSJSONSerialization dataWithJSONObject:installData
                                                    options:0
                                                    error:&error];
            if (jsonData) 
                NSString *JSONString = [[NSString alloc] initWithBytes:[jsonData bytes] length:[jsonData length] encoding:NSUTF8StringEncoding];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^

     [[super webView] stringByEvaluatingJavaScriptFromString: [NSString stringWithFormat:@"javascript:window.plugins.appsFlyer.onInstallConversionDataLoaded(%@)", JSONString]]; 
);

             else 
                NSLog(@"%@",error);
            
        

【讨论】:

【参考方案2】:

AppsFlyer 发布了针对该问题的修复程序..从https://github.com/AppsFlyerSDK/PhoneGap 更新并更新 您也可以在 github 上提交问题。

【讨论】:

以上是关于cordova appsFlyer 应用程序第一次崩溃的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 ios 应用程序中使用 2 个不同的 Appsflyer 帐户吗?

尝试初始化 iOS AppsFlyer SDK 时出现 SIGABRT 错误

与 AppsFlyer 的深层链接不调用 onAppOpenAttribution

AppsFlyer 有开发环境或沙箱吗?

AppsFlyer 集成在 iOS 中不起作用?

iOS AppsFlyer的使用注意事项