【问题标题】: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 中获得的流镜像。所以这确实是一个有趣的问题。

标签: ios unity3d facebook-unity-sdk


【解决方案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 ();
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多