上传app到App Store 报二进制文件错误

我的app从2015年上线至今,迭代版本无数,今天上传到appstore的时候突然得到这么个错误,让我也是一脸懵逼! 最主要的是除了这个提示以外没有任何邮件。经过网上的查阅,最后解决这个问题。

首先二进制文件错误到底是什么东西,苹果指南上解释如下:

上传app到App Store 报二进制文件错误_第1张图片

如上所述,可能存在以上三种问题,首先我的版本是依次叠加的 ,不会出现CFBundleVersion不符合的情况。然后我的是利用Xcode打包,appuploder上传的,不会存在层级错误的情况,排除。在新添的内容中也没有如一所说的二进制图标不符合。 持续懵逼中。。。

最后找到答案,是由于此次更新项目需求中有一个 监听设备锁屏的操作,代码如下,

```

//监听锁屏事件CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),NULL, screenLockStateChanged, kNotificationLock,NULL,CFNotificationSuspensionBehaviorDeliverImmediately);//监听屏幕状态变化事件CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),NULL, screenLockStateChanged, kNotificationChange,NULL,CFNotificationSuspensionBehaviorDeliverImmediately);

```

而苹果在2017年5月左右的时候明确不让开发者监听设备锁屏的情况。如果出现二进制错误的小伙伴,可以去项目中搜索是否引入了CFNotificationCenterAddObserver。

那项目需要监听锁屏,又怎么办呢?

这里,判断二进制文件的错误是由于苹果机审没过,利用一个字符串拼接的小技巧便可。

如://监听锁屏状态

```

    NSString *com = @"com";

    NSString *apple = @"apple";

    NSString *spring = @"spring";

    NSString *board = @"board";

    NSString *lock = @"lock";

    NSString *state = @"complete";

    self.lockCenterName = [NSString stringWithFormat:@"%@.%@.%@%@.%@%@",com,apple,spring,board,lock,state];

    CFStringRef strRef = (__bridge CFStringRef)self.lockCenterName;

    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, screenLockStateChanged, strRef, NULL, 2*2);

```

解决了这个问题,重新打包上传成功。欢迎有更好方法的小伙伴留言。

参考链接:https://help.apple.com/itc/apploader/?lang=zh-cn#/apdSe850405a

              https://www.jianshu.com/p/7ee21fa85cfa

你可能感兴趣的:(上传app到App Store 报二进制文件错误)