确定是不是从 Unity 安装 Facebook 应用
Posted
技术标签:
【中文标题】确定是不是从 Unity 安装 Facebook 应用【英文标题】:Determining if Facebook app is installed from Unity确定是否从 Unity 安装 Facebook 应用 【发布时间】:2015-03-06 19:22:06 【问题描述】:我们正在使用 Facebook SDK for Unity (v6.0),我现在想知道是否有方法可以检查设备上是否安装了 Facebook 应用程序。
原因是 Facebook SDK 中的一个现有错误(请参阅此处:bug)
我想确定这种情况(仅在安装 FB 应用程序时发生),并做出相应的反应。
【问题讨论】:
非常确定您需要为此使用本机代码,因此如果您在这里没有得到任何答案,您可以尝试提出更一般的问题(或寻找现有问题),例如“ios,检测是否安装了其他应用程序?”或“iOS,检测是否安装了 Facebook?”.. 如果您还不知道如何为 Unity 编写本机插件,请研究如何编写。 这有帮助吗? forum.unity3d.com/threads/… 检查格雷厄姆的答案。我不使用 iOS,所以我不知道这是否真的回答了这个问题。 您可以使用本机插件检查它,但它是特定于平台的。我可以帮助你使用 android,但不知道如何在 iOS 上实现它。 我已经提出了这个问题。因为没有人真正尝试检查是否会工作。您无法在 Unity3D 引擎中进行实际测试,因为它没有安装在 Android 中,而 Unity3D Remote 只是您在 android 中获得的流镜像。所以这确实是一个有趣的问题。 How to detect if Facebook app is installed on iOS? 的可能副本 【参考方案1】:"要使用原生插件,首先需要编写函数 使用基于 C 的语言来访问您需要的任何功能并进行编译 他们进入图书馆。在 Unity 中,您还需要创建一个 C# 调用本机库中的函数的脚本。” 来自http://docs.unity3d.com/Manual/NativePlugins.html
所以,基本上你需要用 Objective-C 编写代码,并提供 Unity 和 Native Code 之间的通信。
检查Facebook APP需要实现的代码是;
(void) checkFacebookApp
if ([[UIApplication sharedApplication] canOpenURL:[NSURLURLWithString:@"fb://"]])
return true;
但是,您需要在 Unity 和 Xcode 项目之间进行一些通信。所以;
class SomeScript : MonoBehaviour
#if UNITY_IPHONE || UNITY_XBOX360
// On iOS and Xbox 360 plugins are statically linked into
// the executable, so we have to use __Internal as the
// library name.
[DllImport ("__Internal")]
#else
// Other platforms load plugins dynamically, so pass the name
// of the plugin's dynamic library.
[DllImport ("PluginName")]
#endif
private static extern float checkFacebookApp ();
void Awake ()
// Calls the FooPluginFunction inside the plugin
// And prints 5 to the console
bool check = checkFacebookApp ();
【讨论】:
以上是关于确定是不是从 Unity 安装 Facebook 应用的主要内容,如果未能解决你的问题,请参考以下文章
Facebook Unity SDK iOS 登录不使用系统级登录,而是使用浏览器或 Facebook 应用程序