我使用的是Unity5.5.0+FBSDK7.9+XCODE8.2
本來(lái)想著直接使用fb自己的sdk應(yīng)該不會(huì)有什么問題,然而中途卻遇到閃退,具體閃退的地方是在打開fb登錄頁(yè)面之后,返回的時(shí)候的崩潰,也不知道什么原因。
在網(wǎng)上找了大半天,終于被我找到了,原來(lái)很多人已經(jīng)遇到過了。因此在這里記錄下:
解決方法原文地址:
點(diǎn)我看原文
可能需要翻墻,反正我都是翻墻看的,主要是加了兩個(gè)文件,這個(gè)比較高級(jí),不需要改unity導(dǎo)出的文件,其他人的都是直接修改導(dǎo)出文件,這樣在調(diào)試導(dǎo)出的時(shí)候特別麻煩。
這個(gè)人直接重寫了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)其實(shí)就是在添加item的時(shí)候判斷value是否為空,因?yàn)閡nity的疏忽,所以需要自己加上。我們可以把這兩個(gè)文件放到Unity編輯器中的Plugins/iOS下面,這樣每次導(dǎo)出都不用修改了,像這樣:

這次讓我學(xué)習(xí)到一個(gè)新東西,就是
IMPL_APP_CONTROLLER_SUBCLASS=============
另外后面又發(fā)現(xiàn),unity的新版本,已經(jīng)把這個(gè)問題解決了,下載最新的5.5.1即可,不過我還沒試過,下載太慢了,如果你不想下載,也可以使用我這個(gè)方法去做。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注