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
is this only air 29?
I just had an app accepted that was air 27 - can't you just republish with air 27?
Copy link to clipboard
Copied
happened to me with air SDK 27 and IOS version 11.2
Copy link to clipboard
Copied
It"s strange, I submitted my app on the App Store with Air 29 and no problem.
So you probably call indirectly those non-public references.
You might try to find which part of your code trigger those non-public API references. If this code is important then you should try to get the same result by other means.
Copy link to clipboard
Copied
Air 29 is not available for 6 months. So either you were seeing the same reject from Apple for another version of Air as well, which would be an important information, or you are exaggerating the timeframe.
Copy link to clipboard
Copied
False statement, Ios is not rejecting AIR or AIR 29, it's rejecting YOUR app for other reasons and by the look of it it might be the use of third party library that Ios doesn't like.
Copy link to clipboard
Copied
Hi,
Even our app was rejected with the same notice. Its built in AIR 27. Anyone else has faced this issue?
Regards,
Nishant
--------------
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.
------------
Copy link to clipboard
Copied
We have the same problem. Our latest build was rejected with the same message.
Copy link to clipboard
Copied
We are using the following libraries:
Are you using any of the above libraries in your project? Mention those so that we can find common possible ANE causing problem.
Copy link to clipboard
Copied
Here's our ANE list. The only one that intersects is AndroidFullScreen, but it doesn't even has an iOS/arm implementation.
The only references to
_IOPSCopyPowerSourcesInfo
_IOPSCopyPowerSourcesList
_IOPSGetPowerSourceDescription
that I found are contained in the AIR SDK files. However, as Gameduchy said, those are normal, non-private references with no undescore in the beginning.
We will try to get more information from Apple regarding this problem.
Copy link to clipboard
Copied
Will you submit your app after removing AndroidFullScreen.ane? We are submitting a technical request to Apple to see if they can give us more idea about what to do exactly.
Anyone having any other update, please post here.
Copy link to clipboard
Copied
For now we won't. After further research I see the possible reason for the problem. While the IOKit itself is supported in both macOS and iOS SDKs (see IOKit | Apple Developer Documentation ), the functions
IOPSCopyPowerSourcesInfo IOPSCopyPowerSourcesInfo - IOKit | Apple Developer Documentation
IOPSCopyPowerSourcesList IOPSCopyPowerSourcesList - IOKit | Apple Developer Documentation
IOPSGetPowerSourceDescription IOPSGetPowerSourceDescription - IOKit | Apple Developer Documentation
are marked as macOS-only.
Analysis of the hex contents of the packed IPA file reveals that those methods are at least referenced somewhere. I was also able to locate names of those functions in the libRuntimeHMAOT.arm-air.a file located in lib\aot\lib folder of AIR SDK.
We will request further clarification from Apple and we really need someone from AIR team to chime in.
Copy link to clipboard
Copied
We just received this message as well and it looks like it is in fact part of the Adobe AIR SDK. The thing is that it looks like it’s only used by Mac OS and not iOS. I’ve replied back to the App Review team to ask for a resolution to this, but it looks like Adobe needs to remove these references when publishing to mobile platforms.
Copy link to clipboard
Copied
Hi, I have four apps published in AIR 29, one published successfully, while the other three got this message. I am using greensock for all four, so if one of it pass with greensock, I suppose greensock is not the problem. In fact, all the ane files I use across my four apps are the same, so I can safely cancel out that it is referenced from those anes. One thing different from the three rejected apps to the accepted one is that, for those three apps, I have a partial preloader going on when the app startup to load all my assets. Repeated checks shows nothing to get power source information, so I am really confused where it was triggered. Unless the chuck of code below actually trigger the reference.
var percentage:Number = loaderInfo.bytesLoaded /loaderInfo.bytesTotal*100;
loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
loaderInfo.addEventListener(Event.COMPLETE,on_complete);
Either way, let's hope adobe come up with a fix soon.
Copy link to clipboard
Copied
Anyone logged a bug on the tracker for this as yet? Tracker
Copy link to clipboard
Copied
I've had the same problem and thats with air 27
these are my ane's
Copy link to clipboard
Copied
I surely this problem is not about ANE,i have the same problem with not any ANE used.
Copy link to clipboard
Copied
but i've had an app accepted recently like a few days ago that used air 27 so how come that didn't have the issue?
Copy link to clipboard
Copied
Our application got rejected for the same issue. But our previous build was approved just a few days ago. We haven't made any changes to the SDKs or ANEs since then. Our app uses AIR 28.0
Copy link to clipboard
Copied
Sounds like a policy change at Apple then, they've probably only just started pulling apps up on this API usage.
Copy link to clipboard
Copied
The thing is, I sent all 4 apps for approval in the same day, right after one another just yesterday. Can they actually approve one of my app, then change the policy the next minute and reject all my other three apps because of that?
Copy link to clipboard
Copied
Seems to be selective enforcement, as is often the case with Apple. Nevertheless, if that many people started encountering the problem already, it's only a matter of time until every submission is blocked.
Copy link to clipboard
Copied
In other news, I can't submit bug report on the Adobe bug tracker, request fails with status 400 Bad Request. That's a bit ridiculous, if I'm honest. If anyone cares to try, here's the post body I tried to submit:
Problem Description:
Recently Apple review team started to disallow publishing iOS apps built with AIR to the App Store with the following statement:
----
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.
----
Analysis of the hex contents of the packed IPA file reveals that those methods are at least referenced somewhere in the contents. I was also able to locate names of those functions in the libRuntimeHMAOT.arm-air.a file located in lib\aot\lib folder of AIR SDK.
Possible reason for the problem is that the IOKit itself is supported in both macOS and iOS SDKs, but the functions IOPSCopyPowerSourcesInfo, IOPSCopyPowerSourcesList, IOPSGetPowerSourceDescription are marked as macOS-only.
https://developer.apple.com/documentation/iokit
https://developer.apple.com/documentation/iokit/1523839-iopscopypowersourcesinfo
https://developer.apple.com/documentation/iokit/1523856-iopscopypowersourceslist
https://developer.apple.com/documentation/iokit/1523867-iopsgetpowersourcedescription
There are two forum threads about the problem, it seems to be widespread:
https://forums.adobe.com/thread/2472940
https://forums.adobe.com/thread/2472510
Steps to Reproduce:
Submit any IPA package build with AIR SDK to Apple AppStore verification.
Actual Result:
App fails verification with the aforementioned statement from Apple review team.
Expected Result:
App passes verification.
Any Workarounds:
None currently.
Copy link to clipboard
Copied
Hi,
We are investigating app store submission issue. So far this doesn't look like an AIR issue but we will keep this thread updated.
Also tracker team is looking into the bug submission issue on priority.
Thanks,
Ankit | AIR Engineering Team
Copy link to clipboard
Copied