在Unity iOS中集成Adobe Omniture

时间:2014-08-06 07:32:23

标签: ios unity3d adobe adobe-analytics

我必须将Adobe Omniture集成到我的Unity项目中。我设法调用了Android所需的大部分功能,但现在出现了问题的iOS部分。

Omniture带有* .a文件(AdobeMobileLibrary.a),它必须是库本身,头文件(AdobeMobile.h)和用于配置的json文件。该库是用Objective C编写的。 我将所有这些文件放在Assets / Plugins / iOS中。

从名为version()的库中调用一个返回字符串的函数

[DllImport("__Internal")]
extern static string version();
目标C中的

签名是

NSString *libraryVersion = [ADBMobile version];

Unity精确编译,但在Xcode中,Apple-Mach-O-Linker表示没有名为_version()的函数。 我检查了头文件,.a文件和.json文件是否在为我创建的项目统一中。我还尝试将.a文件添加到Buildphase - >链接Binary与图书馆,但没有任何帮助。

是否可以在C#脚本中调用纯Objective C函数,或者我是否必须使用一些调用实际Omniture函数的包装函数编写我自己的用c语言编写的库?

1 个答案:

答案 0 :(得分:1)

试试这个:

首次将“AdobeMobile”文件夹添加(拖动)到Xcode项目中时,请确认以下设置:

  • 检查项目“将项目复制到目标组的文件夹(如果需要)”。
  • 选择广播选择“为任何添加的文件夹创建组”。
  • 选择要使用Adobe AppMeasurement代码的目标(Unity应用程序)。

在项目目标的Build Phases选项卡中,展开Link Binary with Libraries部分并添加以下库:

  • libsqlite3.dylib
  • SystemConfiguration.framework

另外,我发现这篇文章,似乎澄清了你可以从Unity调用Objective C函数:Passing complex data type from a pure c plugin to Unity C# scripts

  

基本功能已经有效。也就是说,我已经拥有了   在我的插件中调用基本函数来启动产品请求   Apple App Store可以从Unity调用。在统一脚本中   你只需要这样调用这个方法:

[DllImport ("__Internal")]
private static extern void RequestProducts(string[] productIdentifiers, int arrayCount);                          

public static void RequestProductData( string[] productIdentifiers )
{
    RequestProducts(productIdentifiers, productIdentifiers.Length);
}
     

这会调用C函数,如下所示:

void RequestProducts(char* productIdentifiers[], int arrayCount)
{
    // Call the In-App purchase manager to initialize the product request
    [[InAppPurchaseManager sharedInAppPurchaseManager] RequestProductData:productIdentifierCollection];
}