Authenticating with the App Store 问题

环境

xcode 11.4.1

现象

昨天准备上传一个更新的app,一直无法成功,刚开始以为网络问题,只是速度慢,后面挂机睡觉,今天早上一看,还是一样卡死不动。提示:Authenticating with the App Store

搜索了下,发现了些许线索:
【1】https://juejin.im/post/5e4cab5ee51d4526d6405981
【2】https://github.com/iOSDevLog/com.apple.amp.itmstransporter

原因在上面的两个链接里都有解释,简单说就是,第一次运行时iTMSTransporter更新速度过慢或者网络异常导致无法更新成功。实际测试,6k左右的速度,还不停断链。

解决

  1. 参照上面的链接1,重新执行iTMSTransporter,等待更新成功
  2. 通过github更新文件,但是可惜因为某些语音,一样速度可怜,跟方法一效果差不多。
  3. 通过国内cdn下载iTMSTransporter,然后覆盖本地目录。一搜,发现都是某网站的结果,要注册的积分下载,无语,所以做一个国内的链接,具体参看:https://wp.goodmemory.cc/com-apple-amp-itmstransporter-download/

beginBackgroundTaskWithExpirationHandler 告警

xcode 出现类似的 log:

Background Task 139 ("xxx"), was created over 30 seconds ago. In applications running in the background, this creates a risk of termination. Remember to call UIApplication.endBackgroundTask(_:) for your task in a timely manner to avoid this.

原因:
由于IOS sdk进行了更新,导致beginBackgroundTaskWithExpirationHandler 没有进行正确的调用,参考:

https://stackoverflow.com/questions/10319643/proper-use-of-beginbackgroundtaskwithexpirationhandler

正确调用方式参考代码:

- (void) doUpdate 
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        [self beginBackgroundUpdateTask];

        NSURLResponse * response = nil;
        NSError  * error = nil;
        NSData * responseData = [NSURLConnection sendSynchronousRequest: request returningResponse: &response error: &error];

        // Do something with the result

        [self endBackgroundUpdateTask];
    });
}
- (void) beginBackgroundUpdateTask
{
    self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        [self endBackgroundUpdateTask];
    }];
}

- (void) endBackgroundUpdateTask
{
    [[UIApplication sharedApplication] endBackgroundTask: self.backgroundUpdateTask];
    self.backgroundUpdateTask = UIBackgroundTaskInvalid;
}

注意以上代码只是告诉你begin和end配对调用的使用方式,具体代码的细节问题,要根据你自己的工程进行调整。