Copy link to clipboard
Copied
Our mobile game uses FLash, and AIR 29 to make it work on IOS devices,
However, we can't upgrade our game since half year ago, and Apple review team finally told us the reason:
REJECTED:
Your app uses or references the following non-public APIs:
_IOPSCopyPowerSourcesInfo, _IOPSCopyPowerSourcesList, _IOPSGetPowerSourceDescription
The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.
Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.
Next Steps
If you are using third-party libraries, please update to the most recent version of those libraries. If you do not have access to the libraries' source, you may be able to search the compiled binary using the "strings" or "otool" command line tools. The "strings" tool can output a list of the methods that the library calls and "otool -ov" will output the Objective-C class structures and their defined methods. These tools can help you narrow down where the problematic code resides. You could also use the "nm" tool to verify if any third-party libraries are calling these APIs.
Resources
For information on the "nm" tool, please review the "nm tool" Xcode manual page.
If there are no alternatives for providing the functionality your app requires, you can file an enhancement request.
Then we found it's in AIR sdk, even 29.
Then we replied:
The earlier letter said our app has the following non-public APIs:
"_IOPSCopyPowerSourcesInfo", "_IOPSCopyPowerSourcesList" and "_IOPSGetPowerSourceDescription".
We checked the ipa file with the tools you suggested.
"nm" and "oTool" found none.
The tool "strings" only found "IOPSCopyPowerSourcesInfo", "IOPSCopyPowerSourcesList" and "IOPSGetPowerSourceDescription" (non-underlined) referenced.
After searched the non-underlined version from the apple develop center, we thought they are public APIs.
However, we never called them.
These were found in the popular SDK Adobe AIR, and were alone there for years.
We haven't got any alternatives beyond Adobe AIR.
Copy link to clipboard
Copied
Hey, for a quick fix. You can re-sign this binary then install on the device. However you need access to a mac.
See the message by me above about 'ipa_sign'
Copy link to clipboard
Copied
Thanks.
I read your article and will try it.
Copy link to clipboard
Copied
Hi, if this can help :
After updating to .122 SDK, we got the same reject on App Store.
So, we tried to add overrideAir.ane from myflashlab in the project (beacaus we have another app that contains this ANE which passed the App Store validation) and that worked ! App Store accepted !
To be precise, in our project, we use :
By the way, thanks to Adobe Team.
Bests.
Copy link to clipboard
Copied
Seems odd that adding an ANE resolved the IOPS rejection. Are you sure your first attempt was with 122?
Glad you've passed review either way!
Copy link to clipboard
Copied
I'm also having trouble making an Ad Hoc build. I think I might have figured out what's going on however...
It appears to relate to the new "beta-reports-active" Entitlement. This entitlement is only supposed to exist on the App Store profiles (based on my exploring of an App Store and Ad Hoc provisioning profile). I just made an Ad Hoc build with the new AIR 29 and my app.xml did not specify "beta-reports-active" in the Entitlements section. However, unzipping the resulting ipa and running 'codesign -d --entitlements :- "Payload/MyApp.app"' for some reason "beta-reports-active" has been added. This is causing an "The executable was signed with invalid entitlements" error when trying to load it onto a valid device. Also of note is that the previous AIR 29 does not do any of this nonsense with the "beta-reports-active" Entitlement.
Hope this helps!
Copy link to clipboard
Copied
My case is the same.
I did not specify "beta-reports-active" in descriptor file (.xml).
By the way ...
when it was built with air 29.0.0.122,
"beta-reports-active" was added automatically.
But this was not added in air 28 or air 27.
Copy link to clipboard
Copied
I also had an issue when testing Ad-Hoc (enterprise certificate). But I regarded it as something odd with my certificates/signing process (there are many issues with signing certificates).
I did manage to get around it to test before submitting to the app store but re-signing my ad-hoc IPAs and then testing those.
I generated the IPA from Adobe Animate, then resigned with the same certificate/key on mac with this tool 'IPA Sign':
Then I used i-Funbox to install the IPA to the device quickly without having to do uploading/download with enterprise plist:
iFunbox | the File and App Management Tool for iPhone, iPad & iPod Touch.
Is everyone having this certificate issue when generating AIR 29.0.0.112 ad-hoc?
Copy link to clipboard
Copied
On AIR 29.0.0.112 Ad Hoc worked just fine for me.
AIR 29.0.0.122 was where I had Ad Hoc issues.
Copy link to clipboard
Copied
No, I have Ad Hoc issues with AIR 29.0.0.122.
AIR 29.0.0.112 Ad Hoc worked just fine.
@chris.campbell any new on this issue?
Thanks!
Copy link to clipboard
Copied
My app has been approved by Apple.
Thx Air Team 🙂
Copy link to clipboard
Copied
Hi,
AIR ADK version 29.0.0.122 has been released. The Apple store app rejection issue, Tracker is addressed with this build. You may download the build from Download Adobe AIR SDK
Thanks!
Copy link to clipboard
Copied
Wasn't fixed. Apps are still rejected.
Probably reason is that Adobe is testing this version of the SDK on Windows only?
Copy link to clipboard
Copied
I made a submission to Adobe using the Adobe beta SDK 29 from a Mac, with no problem.
Copy link to clipboard
Copied
I re-submitted our app with Air29 build 122, but it was still rejected for the same reason.
I cleaned the project and rebuilt again only to find those strings still there.
Any advice for something I might have missed?
Copy link to clipboard
Copied
My app was approved with AIR 29 Build 122 after having been rejected with a previous build of AIR 29.
Could you please tell me how to get those strings from the compiled IPA?
Copy link to clipboard
Copied
Is it possible that you had an earlier version of AIR 29 SDK installed and the build took place using that rather than the revised version?
Copy link to clipboard
Copied
I've removed air 29 sdk dir completely, unpacked freshly downloaded sdk, refreshed caches in Intellij, checked that sdk description does mention build ver 112. Anyway, actually my app is still in review, but typically it took less than an hour, now it's 12 hours under review and counting. Expecting response today, though.
Copy link to clipboard
Copied
I hope that "build 112" is a typo because it should be build 122..
Copy link to clipboard
Copied
Yes, a typo. Build 122 it is.
Copy link to clipboard
Copied
No problems here, we have had 2 approvals with this latest release. Both packaged from macOS.
Copy link to clipboard
Copied
For how long were the apps "under review"?
Copy link to clipboard
Copied
I don't think review times are always linear and may vary perhaps according to region. My last submission was dealt with in less than a day.
Copy link to clipboard
Copied
We are also developer of adobe air apps for ios store and now we are confused , should we use this latest fixed Air 29.122 sdk or not for final release, I saw some people mentioning accepted and recent post says rejected
Since we had already tried 2 times, now the message says we will terminate your account etc.. and not sure we should take a risk
Can someone please help post exact instructions using FB for whom this was accepted
Mainly i am looking any changes to app-descriptor.xml, any compile time settings, sdk versions etc..
Thanks in advance and looking eagerly to Adobe to come-out with final solution quickly
-Amit
Copy link to clipboard
Copied
OMA2k​​ To see if you have the private APIs in your compiled binary you can check it this way:
Generate .IPA
Change .IPA to .zip
Extract this zip
Then on a mac use the strings tool:
Either dump the file and search:
strings Payload/MyApp.app/MyApp > strings.txt
Then open strings.txt and search for 'PowerSources'
Or use grep to check the output, if it prints out the methods in the front page it has the private APIs in:
strings SJP_Pensions.app/SJP_Pensions | grep PowerSources
I've just ran this test as I was curious if Apple were checking this correctly. They are. The submission that failed had 'IOPSCopyPowerSourcesList/IOPSCopyPowerSourcesInfo' inside my .app, and those that passed didn't have references to these strings.
Copy link to clipboard
Copied
Hello. I've checked my approved IPA using the instructions you provided and I have NOT found any "PowerSources" string inside the "strings.txt" file created using the "strings" tool ("strings Payload/Xxxxxxx.app/Xxxxxxx >strings.txt").
niestudio : Are you sure you're using the correct version of AIR? (remember not all versions of AIR 29 contain the fix, it has to be AIR 29 Build 122). The text you underline in red in your screenshot just says "29.0" but it doesn't specify which build. Please check the settings in your IDE (Flash Builder, apparently) and make sure to use AIR 29 Build 122, currently publicly available: Download Adobe AIR SDK