Unity3D-使用FacebookSDK闪退问题

    xiaoxiao2021-03-26  36

    参考:http://blog.csdn.net/pz789as/article/details/54890299

    我使用的是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; @end OverrideUnityAppController.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; } @end IMPL_APP_CONTROLLER_SUBCLASS(OverrideUnityAppController) 其实就是在添加item的时候判断value是否为空,因为unity的疏忽,所以需要自己加上。

    我们可以把这两个文件放到Unity编辑器中的Plugins/iOS下面,这样每次导出都不用修改了,像这样:

    这次让我学习到一个新东西,就是 

    IMPL_APP_CONTROLLER_SUBCLASS

    =============

    另外后面又发现,unity的新版本,已经把这个问题解决了,下载最新的5.5.1即可,不过我还没试过,下载太慢了,如果你不想下载,也可以使用我这个方法去做。

    转载请注明原文地址: https://ju.6miu.com/read-663672.html

    最新回复(0)