我使用的是Unity5.5.0+FBSDK7.9+XCODE8.2
本來想著直接使用fb自己的sdk應該不會有什么問題,然而中途卻遇到閃退,具體閃退的地方是在打開fb登錄頁面之后,返回的時候的崩潰,也不知道什么原因。
在網上找了大半天,終于被我找到了,原來很多人已經遇到過了。因此在這里記錄下:
解決方法原文地址:
點我看原文
可能需要翻墻,反正我都是翻墻看的,主要是加了兩個文件,這個比較高級,不需要改unity導出的文件,其他人的都是直接修改導出文件,這樣在調試導出的時候特別麻煩。
這個人直接重寫了UnityAppController中的application方法。
OverrideUnityAppController.h
#import "UnityAppController.h"@interface OverrideUnityAppController : UnityAppController-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;@endOverrideUnityAppController.mm 注意后綴名稱是.mm哦#import "OverrideUnityAppController.h"#include "PluginBase/AppDelegateListener.h"@implementation OverrideUnityAppController-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ NSMutableArray* keys = [NSMutableArray arrayWithCapacity:3]; NSMutableArray* values = [NSMutableArray arrayWithCapacity:3]; auto addItem = [&](NSString* key, id value) { [keys addObject:key]; if (value == nil){ [values addObject:[NSNull null]]; }else{ [values addObject:value]; } }; addItem(@"url", url); addItem(@"sourceApplication", sourceApplication); addItem(@"annotation", annotation); NSDictionary* notifData = [NSDictionary dictionaryWithObjects:values forKeys:keys]; AppController_SendNotificationWithArg(kUnityOnOpenURL, notifData); return YES;}@endIMPL_APP_CONTROLLER_SUBCLASS(OverrideUnityAppController)其實就是在添加item的時候判斷value是否為空,因為unity的疏忽,所以需要自己加上。我們可以把這兩個文件放到Unity編輯器中的Plugins/iOS下面,這樣每次導出都不用修改了,像這樣:
這次讓我學習到一個新東西,就是
IMPL_APP_CONTROLLER_SUBCLASS=============
另外后面又發現,unity的新版本,已經把這個問題解決了,下載最新的5.5.1即可,不過我還沒試過,下載太慢了,如果你不想下載,也可以使用我這個方法去做。
新聞熱點
疑難解答