Facebook を v4.0.x および最新の Parse ライブラリに更新してから、ユーザーがログインしようとすると、アプリがハングします。
私のスタック トレースは次のようになります。
私は以前に非常によく似た問題を抱えていました。ここで答えました: [PFFacebookUtils initializeFacebook] - semaphore_wait_trap
ただし、そのソリューションは機能しなくなりまし[PFUser currentUser]
た。[PFUser(Private) _getCurrentUserWithOptions:]
[BFTask(Private) waitForResult:withMainThreadWarning:]
私のアプリでは、PFUser を MPLUser というクラスにサブクラス化し、ユーザー メソッドをオーバーライドしました。これが問題と関係があるかどうかわかりませんか?
+ (MPLUser *)user
{
return (MPLUser *)[PFUser user];
}
これが発生し始めると、アプリを起動できなくなります。ただし、通常、ロックが発生し始める前にアプリを数回起動することができます。それは通常、クラッシュした後に発生します...
私はポッド「ParseFacebookUtilsV4」を使用しており、すべてのライブラリを最新バージョンに更新しています。
アップデート:
ログオンしようとしているように見える別のスレッドからのスタック トレースを次に示します。
Parse と Facebook を次の順序で初期化します。呼び出しを逆にすると、クラッシュします。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self initDefaults];
[self initialiseApplicationSpecifics];
[self setupParseWithOptions:launchOptions];
[self enableCrashReporting];
[self setupIAPs];
//etc...
}
- (void)initialiseApplicationSpecifics
{
[Flurry setCrashReportingEnabled:YES];
[self registerParseSubclasses];
[ParseCrashReporting enable];
[Parse enableLocalDatastore];
#ifdef MPL
[Parse setApplicationId:@"xxxyyy"
clientKey:@"xxxyyy"];
[Flurry startSession:@"xxxyyy"];
#elif MGM
[Parse setApplicationId:@"yyyxxx"
clientKey:@"yyyxxx"];
[Flurry startSession:@"yyyxxx"];
#endif
}
- (void)setupParseWithOptions:(NSDictionary *)launchOptions
{
[PFFacebookUtils initializeFacebookWithApplicationLaunchOptions:launchOptions];
[PFTwitterUtils initializeWithConsumerKey:@"aaaabbbb"
consumerSecret:@"bbbbaaaa"];
[PFAnalytics trackAppOpenedWithLaunchOptions:launchOptions];
}