0

在 Metaio SDK 文档的示例中,xml 是从 Assets 文件夹(更具体地说,从 iOS 中的 NSBundle)加载的。

但是在 iOS 中,您不能写入应用程序包中的文件——整个包是只读的

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/index.html

在我的项目中,我需要下载所有使用 Metaio SDK 的东西,比如视频、声音、3D 模型和可跟踪图像以及您的 xml 配置。

例如,从 Metaio 文档中,使用 XML 然后在 Assets 中,很容易像:

NSString* MarkerTrackingFile = [[NSBundle mainBundle] pathForResource:@"tracking" ofType:@"xml" inDirectory:@"Assets/tracking"];

但是我怎么说,我需要从互联网上获取这个 XML,所以,为了做到这一点,我创建了一个下载方法。

(这只是一个用于学习的脏代码,暂时没有在没有线程和任何特殊的情况下进行优化)

/*********************************************/

-(void)downloadXML{

    NSArray       *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString  *documentsDirectory = [paths objectAtIndex:0];

    NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"markerless_tracking.xml"];


    NSString *contents = [NSString stringWithContentsOfFile:filePath];

    NSLog(@"%@", contents);

}

下载后,我尝试在我的项目中使用这个 XML,我确认了这个一致性,但是当我用这个方法调用他时不起作用,但是我收到错误消息:没有成功加载跟踪配置

- (void) loadTrackingConfigurationFiles
{
    // Markerless tracking configuration file

    NSArray       *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString  *documentsDirectory = [paths objectAtIndex:0];
    NSString* markerlessTrackingFile = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"markerless_tracking.xml"];

    // We apply the correct one to the SDK
    if(markerlessTrackingFile)
    {
        bool success = m_metaioSDK->setTrackingConfiguration([markerlessTrackingFile UTF8String]);
        if( !success)
            NSLog(@"No success loading the tracking configuration");
    }

}

我的主要问题是:是否可以从 METAIO SDK 中的 NSBundle 文件夹外部加载 xml?在我的项目中,我的本地文件夹中没有任何内容,所有内容都已下载,跟踪图像、视频、声音、xml 等,为此目的使用 Metaio SDK 是否可行?

我感谢任何帮助、示例或建议。

4

0 回答 0