首页 > 学院 > 开发设计 > 正文

Unity3D-使用FacebookSDK闪退问题

2019-11-09 18:05:16
字体:
来源:转载
供稿:网友

我使用的是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即可,不过我还没试过,下载太慢了,如果你不想下载,也可以使用我这个方法去做。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表