在iOS上从URL加载XML配置 - [Metaio SDK]

时间:2014-12-19 18:00:23

标签: ios objective-c xml augmented-reality metaio

在Metaio SDK docs的必须示例中,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是否可行?

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

0 个答案:

没有答案