mxcl / PromiseKit

Promises for Swift & ObjC.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Issues when submitting to App Store building against iOS 16

mpretty-cyro opened this issue · comments

I've just built and uploaded a version of an app to the AppStore and received a warning indicating that PromiseKit is using non-public selectors from the upload process - I've submitted the build for TestFlight review (haven't submitted for a full review yet) but haven't gotten an approval/rejection at the time of writing

I assume it's actually just a naming collision rather than using non-public APIs but wanted to raise the issue ASAP to try and get a jump on a potential review rejection

Screen Shot 2022-10-06 at 10 43 00 am

XCode: 14.0.1
PromiseKit: 6.18.1
Installation: CocoaPods

Any updates to this issue?

The app got approved even with this warning (both to TestFlight and the AppStore)

Even though the upload is successful, submitting the release for review is rejected on the grounds of 2.3, how can this be resolved?

FYI this is not an issue with SPM.

The objective C portions of PromiseKit use some pretty low level tricks, it's possible Apple has now decided this is not acceptable.

I do not have a lot of time for PromiseKit nowadays since I’m trying to solve the fact I don’t have time with it via https://github.com/teaxyz, so if anyone affected by this could do the preliminary research I will then take over after that.

Specifically:

  1. what's the beef
  2. which part of the code?

lib signing issue reported by applestore

The app references non-public selectors in Payload/UnimedPlanoDeCuidado.app/Frameworks/PromiseKit.framework/PromiseKit: promise

commented

Has anyone solved this problem?

I just took a cursory glance through our objc sources and we don’t seem to do anything that isn't public API. It's all C magic that is per the binary spec for objc.

Also I can't find a function called promise so. hmm.

@mxcl I'm not sure if this is worth mentioning or not but this warning only occurs for me when I'm archiving projects that were created in the latest versions of Xcode. I have a more mature project that I continuously update which utilizes PromiseKit a lot in the same manner as my newer projects and I'm yet to see the warning for it. If I archive my new projects in an older version of Xcode the warning does not occur on upload.

I have also had my newer project rejected from the store on a few occasions because of this warning but it seems to be up to the discretion of the tester as to whether the app should pass or not as they sometimes allow it even with the warning.

I'm using version 6.15.3 via SPM and I have not yet seen this App Store warning using Xcode 14.x
@Kaspik what version are you using?

I don't think this could be related to using the framework via SPM, so I've run a diff between versions 6.15.3 and 6.18.1 (reported in first comment). There is a change adding a file, Async.swift, that imports swift concurrency and uses async code with a function named async.
Extremelly wild guessing, could it be possible that using swift concurrency adds Apple extra checks for the framework about "restricted api words"?

commented

I updated to version 6.18.1 and I still see the issue. We have a whitelabel app with various targets. For old existing targets when I upload the app I don't see the warning, for a new app which we are uploading to Testflight for the very first time I see the warning which leads me to think that this is some new validation which apple does for new apps. The two apps are almost identical otherwise - especially the parts dealing with PromiseKit.

SwiftPM doesn't have the objc portions so it is likely due to the objc portions that this warning shows up.

I updated to version 6.18.1 and I still see the issue. We have a whitelabel app with various targets. For old existing targets when I upload the app I don't see the warning, for a new app which we are uploading to Testflight for the very first time I see the warning which leads me to think that this is some new validation which apple does for new apps. The two apps are almost identical otherwise - especially the parts dealing with PromiseKit.

Hello @avlaev
Can you please try v.6.15.3? Or at least v.6.17.1 (the latest PromiseKit 6 without Async.swift).

Hello @mpretty-cyro @tureck1y @DeanGuo @Kaspik @jhonatangeison @178408714 @bevbomb @kikeenrique @avlaev
What is the latest PromiseKit 6 version you can use without the warnings you mentioned?

I've tried to validate an app with both 6.15.3 and 6.17.1, the warning is always there. I'm using Xcode 14.2.

I've just uploaded an app to App Store (TestFlight) and the warning is gone... (v6.18.1 from CocoaPods, Xcode 14.3)

image

Hello @sfiligoj
Did you use PromiseKit 6.22.1?

Hello @sfiligoj Did you use PromiseKit 6.22.1?

No, I'm using the 6.18.1 from CocoaPods. I was surprised about the successful upload without warnings. Does this mean that Apple "released" a little bit the code check? I'm curious if there are other users that noticed this.

Hello @sfiligoj Did you use PromiseKit 6.22.1?

No, I'm using the 6.18.1 from CocoaPods. I was surprised about the successful upload without warnings. Does this mean that Apple "released" a little bit the code check? I'm curious if there are other users that noticed this.

Hello @sfiligoj
Thank you for your comment. @mpretty-cyro Can you please upload a build again?

Thank you for your comment. @mpretty-cyro Can you please upload a build again?

Yep, just submitted a build including 6.15.3 and the warning is gone 👍

Hello @mpretty-cyro
Great! Can you close the ticket please?