Skip to main content
gameduchy
Participant
Mar 31, 2018 12:40 PM UTC
Question

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 is closed to new replies. Start a new post to keep the conversation going.

178 replies

Known Participant
Apr 27, 2018 8:41 AM UTC

Hi,

We're having the same issue. We're trying to upload a new version with AIR 29, but we need to test it before using adhoc compilation and it doesn't work. We have our customers waiting too. We need to test it carefully because we were using AIR 19 until now, because we had problems with StageWebView and new versions of AIR. So we need to test if StageWebView is fixed and for that we need adhoc compilation before we try to upload our app to the App Store.

Thank you for your efforts, Adobe Team. But we need you.

Best.

Translate
Participating Frequently
Apr 27, 2018 8:45 AM UTC

Not being able to do ad-hoc testing sucks, but testflight is a possibility?

Translate
Participating Frequently
Apr 26, 2018 6:46 AM UTC

Adobe team,

Can you update us on the status?

I have customers waiting...

Translate
andrey_b
Participant
Apr 25, 2018 2:26 PM UTC

Hello,

I have the same issue. Build app with Air sdk 29.0.0.122 and can't install it to test, i'm getting error ApplicationVerificationFailed.

How are you testing it if ad-hock doesn't work?

Translate
Flipline
Inspiring
Apr 25, 2018 2:41 PM UTC

I've just kept a version of .112 for building adhoc alongside the newer .122 version for appstore builds.  You can use a development profile and build instead of adhoc for testing, but I've always found there's a wild difference in performance between a development build and an adhoc build (at least for GPU apps, no idea for direct).  Since the adhoc performs the same as an appstore build it's usually the best option for us for fine-tuning performance on devices.

Translate
Participant
Apr 23, 2018 4:46 PM UTC

Hello,

My Air26 app has been rejected too, i have prepared a new one with the fixed Air sdk 29.0.0.122 and after checked files  'IOPSCopyPowerSourcesList' 'IOPSCopyPowerSourcesInfo' 'IOPSGetPowerSourceDescription' strings are correctly disapeared.

I just wait Apple validation now..

Thanks Adobe for your reactivity.

Translate
Participating Frequently
Apr 23, 2018 3:37 PM UTC

We got approved. Thanks Air Team!

Translate
Participating Frequently
Apr 23, 2018 12:33 AM UTC

We have passed Apple review with Air 29.0.0.122.

The distribution version (adhoc, distribution) could not be installed and tested on the device, but distribution version has been registered and passed Apple review.

Is not it possible to unpack the ipa file and check info.plist for the Air version used in the package?

Below is the information below.

<key> CTAirSdkVersion </key>

<string> 29.0.0.122 </string>

If you package it as version 112, it changes as follows.

<key> CTAirSdkVersion </key>

<string> 29.0.0.112 </string>

Translate
Known Participant
Apr 21, 2018 7:07 AM UTC

Accepted! Done!)

Translate
jprankard
Participating Frequently
Apr 20, 2018 10:54 AM UTC

niestudio​ I don't think Adobe will look into your issue until it's proven it's the right version as there is only 1 case of this failing.

Please can you check your strings file for the full adobe version number and post the results in this thread.

strings MyApp.app/MyApp | grep 29.0.0

You should get the build number either 29.0.0.112 or 29.0.0.122, FYI I also get IOS 29,0,0,113 in both versions too

Translate
Inspiring
Apr 20, 2018 12:04 PM UTC

I think the best command to check the build of AIR 29 would be:

strings MyApp.app/MyApp | grep -F 29.0.0

That way you only get strings with dot, not comma.

Translate
jprankard
Participating Frequently
Apr 20, 2018 10:44 AM UTC

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.

Translate
Inspiring
Apr 20, 2018 10:52 AM UTC

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

Translate
Participant
Apr 20, 2018 9:07 AM UTC

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

Translate