在Metaio SDK docs的必须示例中,xml是从Assets文件夹加载的(更具体地说,来自iOS中的NSBundle)。
但是在iOS中,你无法写入应用程序包中的文件 - 整个包是只读的
在我的项目中,我需要下载使用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是否可行?
感谢任何帮助,示例或建议。