确定Unity中是否安装了Facebook应用程序

4
我们正在使用Facebook SDK for Unity (v6.0),我想知道是否有一种方法可以检查设备上是否安装了Facebook应用程序。
原因是Facebook SDK中存在一个已知的错误(请参见此处:错误
我想识别这种情况(仅在安装了FB应用程序时发生),并做出相应的反应。

1
你很可能需要使用本地代码来实现这个,所以如果在这里没有得到答案的话,可以尝试提出一个更一般性的问题(或者寻找已有的问题),比如“iOS,检测是否安装了另一个应用?”或者“iOS,检测是否安装了Facebook?”然后,如果你还不知道如何编写Unity的本地插件,就去研究一下吧。 - eselk
这个有帮助吗?http://forum.unity3d.com/threads/check-if-other-app-is-installed-on-device.272548/检查Graham的答案。我不使用iOS,所以我不知道这是否真正回答了问题。 - Andrea
你可以使用本地插件进行检查,但这将是特定于平台的。我可以帮助你处理Android,但不知道如何在iOS上实现。 - Juanjo Vega
我已经提出了这个问题,因为没有人真正尝试检查它是否能够工作。在Unity3D引擎中,你无法进行任何实际的测试,因为它并未安装在Android系统中,而Unity3D Remote只是你在Android上看到的流媒体镜像。所以这确实是一个有趣的问题。 - Aizen
1个回答

1
“为了使用本地插件,您首先需要编写用于访问所需功能的基于C语言的函数,并将它们编译成库。在Unity中,您还需要创建一个调用本地库函数的C#脚本。”引自http://docs.unity3d.com/Manual/NativePlugins.html “因此,基本上您需要用Objective-C编写代码,并提供Unity和本地代码之间的通信。”
“您需要实现的用于检查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 ();
   }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接