小编ben*_*eno的帖子

在适用于iOS的AdHoc Distribution Build上使用沙箱APNS

我一直在阅读一堆Apple的文档,以及许多其他SO问题,但是没有找到这个特定问题的答案.

我有一个现有的工作流程,可以为QA成员和beta测试人员生成AdHoc Distribution版本.现在我已经添加了对推送通知的支持,我希望这些通知路径也能够进行测试.

我的印象是开发人员构建,使用开发配置文件签名,为沙箱/开发APNS环境生成令牌,以及使用分发配置文件签署的分发版本(无论是发往AdHoc Distribution还是AppStore Distribution) ,为生产APNS环境生成令牌.我相信这可以通过打开不同的.mobileprovision文件并检查aps-environment密钥来确认.

我想知道是否有办法让我的AdHoc Distribution版本使用沙盒APNS环境,而不是生产APNS环境.

如果我真的希望QA和beta测试人员使用沙箱APNS,我是否必须以某种方式找到一种方法来允许他们运行开发版本而不是分发版本?

或者我对事物的运作方式的假设是什么?(参考这篇文章这篇文章)

iphone push-notification apple-push-notifications ios

28
推荐指数
2
解决办法
2万
查看次数

iOS开发人员构建与分发构建

一段时间以来,我一直认为,对于iOS,使用开发人员配置文件签署构建允许应用程序通过XCode构建在授权设备(在开发配置文件中列出)上运行(并进行调试),而使用分发配置文件进行签名允许应用程序在已经专门添加到分发配置文件的其他iOS设备上运行(但未调试),以用于QA/beta测试/等(并通过iTunes同步或OTA分发安装) ,无需那些QA/beta测试人员甚至不知道XCode是什么.

似乎与Apple的几个文档相匹配:

"当您准备好共享应用程序以进行用户测试时,您需要使用分发配置文件创建应用程序存档并将其发送给应用程序测试人员"(来源)

使用开发配置文件进行代码签名允许您的应用程序通过Xcode在设备上运行,使用分发配置文件进行签名可以创建分发版本.

名为"iPhone Developer"的证书允许您通过Xcode在iOS设备上运行/调试您的应用程序,名为"iPhone Distribution"的证书允许使用Ad Hoc分发测试您的提交构建(源代码)

这似乎意味着使用分发配置文件是在App Store外部进行应用程序共享所必需的,多年来我一直认为这是真的.然而,最近我向其他同事展示了一个用例,他们只使用开发配置文件就可以与许多其他人共享构建.另一位用户在此描述了类似的发现:为什么不使用开发配置而不是ad hoc?

我担心我可能会遗漏一些东西,我现在怀疑有些情况只要另一个用户可以访问包含其设备的UUID的相关开发人员配置文件,并将其安装在他们的设备上(拖入iTunes ,配置实用程序等),他们也可以通过iTunes同步开发人员构建,而无需单独的分发版本.

这让我质疑一些关于开发人员和分发版本之间差异性质的假设.我开始认为它更多的是关于调试支持和一般的安装简易性,而不是它的安装方式(XCode vs iTunes/OTA明确).

简而言之,如果设备将UUID包含在开发人员配置文件中,我是否真的需要进行单独的分发版本,或者我可以简单地共享Release Development构建并假设它也适用于iTunes同步?组织者中的"用于开发"按钮是否与此有任何实际关联?

更广泛地说:在提交到App Store之前,在开发/测试阶段如何在组织内的其他人之间共享开发人员和AdHoc构建之间的根本区别是什么?

ad-hoc-distribution ios

9
推荐指数
1
解决办法
6463
查看次数

核心数据保存和UI性能

我想知道是否有任何最佳实践可以提高UI响应能力,同时使用大量托管对象进行Core Data保存(而非提取).

我正在处理的应用程序需要从Web服务按设定的时间间隔下载相当大量的数据,直到完成.在每个间隔上,下载一批数据,格式化为托管对象,并保存到Core Data.因为这个过程有时需要长达5分钟才能完全完成,只需添加一个加载屏幕,直到一切都完成,这不是一个选择,它需要太长时间.我也有兴趣经常写入Core Data,而不是最后一次大写,以保持低内存占用.理想情况下,我希望用户能够正常使用其余应用程序,同时将这些大型数据集下载并写入Core Data.

不幸的是,似乎正在发生的事情是当我尝试保存我放入每个批处理的托管对象上下文中的插入时,该保存操作阻止用户与应用程序的其余部分交互(刷表,触摸按钮等) )直到完成.对于正在进行Core Data保存的那些短时间段,该应用程序非常无响应.

当然,我已经尝试通过减少每个间隔下载的单个批次的大小来减少这些节省,但除了使整个过程花费更长时间的不便之外,仍然会出现未捕获用户滑动的情况,因为在那个特定时间,核心数据保存正在发生.减小尺寸只会减少错过滑动或错过触摸的可能性,但它们似乎经常发生,往往不方便.

对于插件本身,我尝试使用两种不同的实现:insertNewObjectForEntityForName:inManagedObjectContext以及setValuesForKeysWithDictionary.两者都表现出我上面描述的问题.

我尝试了一个更简单的测试原型,以便在模拟器和设备上看到性能,我在这里提供了重要的元素.这个例子实际上并没有从网上下载任何东西,而只是在TableViewController中以设定的间隔将一大堆东西写入核心数据.我很想知道是否有人提出改善响应能力的建议.

- (void)viewDidAppear:(BOOL)animated 
{
    [super viewDidAppear:animated];
    timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(doTimerWork:) userInfo:nil repeats:YES];
}

-(void) doTimerWork:(id)sender
{
    for (int i = 0; i < 1000; i++)
    {
        Misc * m = (Misc*)[NSEntityDescription insertNewObjectForEntityForName:@"Misc" inManagedObjectContext:managedObjectContext];        
        m.someDate = [NSDate date];
        m.someString = @"ASDASDASD";
        m.someOtherString = @"BLAH BLAH BLAH";
        m.someNumber = [NSNumber numberWithInt:5];
        m.someOtherNumber = [NSNumber numberWithInt:99];
        m.someOtherDate = [NSDate date];    
    }

    NSError *error;
    if (![managedObjectContext save:&error]) {
        NSLog(@"Experienced an error …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch core-data objective-c

4
推荐指数
1
解决办法
3050
查看次数