Skip to main content
gameduchy
Participant
April 2, 2018
Question

Adobe Air SDK 29 is not accepted by Apple

  • April 2, 2018
  • 41 replies
  • 34628 views

IOS is blocking AIR, rejected for months,due to AIR has API using IOPSCopyPowerSourcesInfo

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:

Thanks for your resubmission.

Guideline 2.5.1 - Performance - Software Requirements

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.

This topic has been closed for replies.

41 replies

Participating Frequently
April 5, 2018

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.

Anki_AG_
Adobe Employee
Adobe Employee
April 5, 2018

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

Participant
May 30, 2018

While uploaded on " Application Loader " the warning message shown . i checked my certificates is active. Why the issue arrived and how to fix it.

marchbold
Inspiring
April 5, 2018

Sounds like a policy change at Apple then, they've probably only just started pulling apps up on this API usage.

air native extensions // https://airnativeextensions.com
Participating Frequently
April 5, 2018

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?

Participating Frequently
April 5, 2018

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.

maheenkhalid
Participant
April 5, 2018

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

Inspiring
April 5, 2018

I've had the same problem and thats with air 27

these are my ane's

Participant
April 5, 2018

I surely this problem is not about ANE,i have the same problem with not any ANE used.

Inspiring
April 5, 2018

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?

marchbold
Inspiring
April 5, 2018

Anyone logged a bug on the tracker for this as yet? Tracker      

air native extensions // https://airnativeextensions.com
Participating Frequently
April 4, 2018

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.

Participating Frequently
April 4, 2018

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.

Participating Frequently
April 4, 2018

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.

Participating Frequently
April 4, 2018

We have the same problem. Our latest build was rejected with the same message.

Participating Frequently
April 4, 2018

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.

------------

Inspiring
April 3, 2018

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.

Inspiring
April 2, 2018

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.

natural_criticB837
Legend
April 2, 2018

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.