2016-10-24 10 views
0

私は、Firebaseを分析に使用するiOS用のカスタムキーボードを持っています。 Firebaseアプリケーションの設定は、トークンをグローバル変数として使用して、イニシャライザでdispatch_once句を使用して行います。Firebaseアプリケーションの設定がクラッシュする

var token: dispatch_once_t = 0 

class KeyboardViewController: UIInputViewController { 
// .. 
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { 
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 
    dispatch_once(&token) { 
     FIRApp.configure() 
    } // line 90 
    } 
// .. 
} 

これは正常に動作しているが、私はアプリが設定されている場合、多くのデバイス上でクラッシュを示し、多くのクラッシュレポートを受け付けております。私は原因を突き止めるために何日間も立ち往生している。

Exception Type: EXC_CRASH (SIGQUIT) 
Exception Codes: 0x0000000000000000, 0x0000000000000000 
Exception Note: EXC_CORPSE_NOTIFY 
Termination Signal: Quit: 3 
Termination Reason: Namespace SIGNAL, Code 0x3 
Terminating Process: launchd [1] 
Triggered by Thread: 0 

Thread 0 name: 
Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x000000018fab6338 __semwait_signal_nocancel + 8 
1 libsystem_c.dylib    0x000000018f9e20dc nanosleep$NOCANCEL + 200 (nanosleep.c:104) 
2 libsystem_c.dylib    0x000000018fa0568c sleep$NOCANCEL + 44 (sleep.c:62) 
3 libsystem_dnssd.dylib   0x000000018fa6e7d4 ConnectToServer + 832 (dnssd_clientstub.c:607) 
4 libsystem_dnssd.dylib   0x000000018fa6ff44 DNSServiceCreateConnection + 76 (dnssd_clientstub.c:1785) 
5 libsystem_network.dylib   0x000000018fb2d318 __nw_resolver_set_update_handler_block_invoke + 872 (resolver.m:1031) 
6 libdispatch.dylib    0x000000018f9711c0 _dispatch_client_callout + 16 (object.m:455) 
7 libdispatch.dylib    0x000000018f97e860 _dispatch_barrier_sync_f_invoke + 84 (queue.c:3457) 
8 libsystem_network.dylib   0x000000018fb2ce78 nw_resolver_set_update_handler + 208 (resolver.m:1275) 
9 SystemConfiguration    0x0000000190f8a16c __SCNetworkReachabilityRestartResolver + 260 (SCNetworkReachability.c:1711) 
10 SystemConfiguration    0x0000000190f891c8 __SCNetworkReachabilitySetDispatchQueue + 764 (SCNetworkReachability.c:1823) 
11 SystemConfiguration    0x0000000190f88ccc SCNetworkReachabilityScheduleWithRunLoop + 504 (SCNetworkReachability.c:1586) 
12 CustomKeyboard    0x000000010013f630 -[FIRReachabilityChecker start] + 196 
13 CustomKeyboard    0x000000010013abac -[FIRNetwork init] + 156 
14 CustomKeyboard    0x0000000100132e28 -[FIRClearcutLogger init] + 416 
15 CustomKeyboard    0x0000000100132c68 __35+[FIRClearcutLogger sharedInstance]_block_invoke + 36 
16 libdispatch.dylib    0x000000018f9711c0 _dispatch_client_callout + 16 (object.m:455) 
17 libdispatch.dylib    0x000000018f971fb4 dispatch_once_f + 56 (once.c:57) 
18 CustomKeyboard    0x0000000100132c40 +[FIRClearcutLogger sharedInstance] + 108 
19 CustomKeyboard    0x0000000100137214 +[FIRApp initClearcut] + 60 
20 CustomKeyboard    0x0000000100136688 +[FIRApp configureDefaultAppWithOptions:sendingNotifications:] + 132 
21 CustomKeyboard    0x000000010013643c +[FIRApp configure] + 316 
22 libdispatch.dylib    0x000000018f9711c0 _dispatch_client_callout + 16 (object.m:455) 
23 libdispatch.dylib    0x000000018f971fb4 dispatch_once_f + 56 (once.c:57) 
24 CustomKeyboard    0x00000001000e314c _TFC19CustomKeyboard22KeyboardViewControllercfT7nibNameGSqSS_6bundleGSqCSo8NSBundle__S0_ + 1500 (KeyboardViewController.swift:90) 
25 CustomKeyboard    0x00000001000e3270 _TToFC19CustomKeyboard22KeyboardViewControllercfT7nibNameGSqSS_6bundleGSqCSo8NSBundle__S0_ + 112 (KeyboardViewController.swift:0) 
26 UIKit       0x00000001971f7688 -[_UIViewServiceViewControllerOperator __createViewController:withContextToken:fbsDisplays:appearanceSerializedRepresentations:legacyAppearance:traitCollection:initialInterfaceOrientation:hostAccessibilityServerPort:canShowTextServices:replyHandler:] + 2216 (UIViewServiceViewControllerOperator.m:1732) 
27 CoreFoundation     0x0000000190aee160 __invoking___ + 144 
28 CoreFoundation     0x00000001909e1c3c -[NSInvocation invoke] + 284 (NSForwarding.m:2948) 
29 CoreFoundation     0x00000001909e66ec -[NSInvocation invokeWithTarget:] + 60 (NSForwarding.m:3019) 

どうやら、FIRApp.configure()を呼び出した後、コールトレースがシステムライブラリを通過している:ここではクラッシュレポートの1の部分は、スタックトレースです。

スタックトレースからの1つの観察は、クラッシュがデバイスの到達可能性をチェックすることと関係があることです。しかし、私はインターネット接続がないシナリオを再現しようとしましたが、正常に動作しています。

クラッシュの原因を把握するために、任意の助けをいただければ幸い6.

iPhone上のすべてのクラッシュは、iOSの10で起こっ及びそれらのほとんどされていることに注意してください。

+0

あなたは "カスタムキーボード" について語りました。拡張機能でFirebase Analyticsを使用していますか?これは10以外の他のiOSで発生しましたか? – adbitx

+0

はいFB Analyticsを拡張機能で使用しています。 NOS IDは、iOS 10以外のiOSバージョンでは発生しませんでした。 –

+0

Googleに情報をお寄せいただきありがとうございます。私たちはこの問題を掘り下げます。 – adbitx

答えて

1

拡張機能でFirebase Analyticsを使用することは推奨されません。これは、SDKが拡張機能をうまくサポートしないためです。アプリの拡張機能は完全なアプリに比べて機能が限られているため、Firebase Analyticsはこのようなネットワークのようないくつかの条件ではうまく機能しない可能性があります。チームは後で拡張機能をサポートすることを検討しています。デフォルトでは」

アップル

で述べたようにそれは、ネットワークのように思える

は、カスタムのキーボードでは利用できません、キーボードには、ネットワークアクセスを持っていないし、それを含むアプリで コンテナを共有することはできません。これらの事を有効にするにはInfo.plistファイルのRequestsOpenAccessブールキーの の値を に設定します。これにより、 ユーザー信頼のために設計されているように、キーボードのサンドボックスが拡張されます。

https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/CustomKeyboard.html#//apple_ref/doc/uid/TP40014214-CH16-SW1

+0

アレックスDさん、ありがとうございました。 FB Analyticsを使用して、関心のあるイベントを追跡しています。 FBチームがエクステンションをより良くサポートすることを願っています すでに 'RequestsOpenAccess'がありますのでご注意ください。 –

+0

ありがとうございました。あなたのInfo.plistにRequestsOpenAccessを設定していても、Firebase Analyticsの基本的なライブラリが拡張機能で動作しないと推測しています。 – adbitx

+0

Firebase Analytics SDKでキーボード拡張機能を作成し、iPhone 6 iOS 10で実行しようとしました。これまで(RequestOpenAccessを使用して)わかりやすく機能しました。あなたの実装と私の違いは何か分かりません。私がしたのは、通知UIApplicationDidFinishLaunchingNotificationが呼び出されたときにFIRApp.configure()を呼び出すことでした。 – adbitx

関連する問題