简体   繁体   中英

iOS FacebookSDK + Parse SDK + GoogleMaps SDK

I searched a lot and I realized, -ObjC flag that GoogleMapSDK requires, doesn't play well with ParseSDK and FacebookSDK . So I read on all the stackoverflow answers and tried solving my problem. The problem isn't fixed yet.

Steps I performed:

  • Problem 1 :Parse doesn't work with -ObjC
  • Solution 1 : To make Parse work with -ObjC import the FacebookSDK. Done

  • Problem 2 : Parse and Fb SDK both use Bolts.framework and the linker gives duplicate symbol errors(some 92 of them)

  • Solution 2 : Delete Bolts.framework as FacebookSDK already is pre-bundled with it.

  • Problem 3 : After removing the Bolts.framework , duplicate errors go away but there is this one tiny linker error that I can't figure out. I'm assuming they've changed something in the new SDK version. The error is as follows:

  • Solution : ??

Undefined symbols for architecture x86_64: "_BFTaskMultipleExceptionsException", referenced from: ___53+[PFObject(Private) deleteAllAsync:withSessionToken:]_block_invoke214 in Parse(PFObject.o) ___65+[PFObject(Private) _deepSaveAsync:withCurrentUser:sessionToken:]_block_invoke311 in Parse(PFObject.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

The same problem was asked in the comments of [this answer on SO][1] without any reply or a constructive answer.

PS One thing I noticed that FacebookSDK comes bundled with Bolts version 1.1.3 and Parse has a version 1.1.4 in its zip file. Is this causing the problem?? PPS I'm using the latest verions of SDK as of today's date(19th March, 2015)

They are: - Parse SDK: 1.6.4 - GoogleMaps SDK: 1.9.2

Back when the Google Maps SDK for iOS came out, I tried a few methods for hacking around some linker errors:

Google Maps SDK for iOS trying to run on iOS 4.3

One hack I found for working around missing symbols, was just redefining the missing symbol again in my code.

The BFTaskMultipleExceptionsException string is defined here like this:

NSString *const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException";

So maybe just try putting that one line into your code?

From the history on github, it looks like this was just added to Bolts about 19 days ago. Version 1.1.4 of Bolts was released 14 days ago (1.1.3 was from October last year). So it probably is caused by the version mismatch of Bolts that you noticed.

Another option might be to get an older version of Parse from before Bolts 1.1.4 was released.

Presumably this will be fixed once a new Facebook SDK is available with Bolts 1.1.4.

So Bolts Framework 1.1.3 works with Parse 1.6.3. But Parse 1.6.3 was not found anywhere. So I did a lot of digging around and went into the json files of cocoa pods and got the direct link to download Parse 1.6.3 or any version of any framework for that matter. github.com/CocoaPods/Specs of cocoa pods is the repository to look into.

For everyone else, who specifically are looking for Parse 1.6.3. This is the link Just find the source link in the json and copy it in your browser.

I am closing this question with the finale conclusion:

Parse 1.6.3 and FacebookSDK 3.93 depend on Bolts 1.1.3

Parse 1.6.4 is updated with Bolts 1.1.4 but as of this date facebook sdk isnt. Hence we have to work with Parse 1.6.3 till facebook sdk is updated with bolts 1.1.4

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM