IOS part summarizes 2 - Apple audit report

Recommended for you: Get network issues from WhatsUp Gold. Not end users.

To summarize the iOS part of the problem (two) - Apple audit report

1 recording investigation 5.1 new regulations upload rejected and problem solving process.

   A few days ago, the latest update is rejected, suggesting that Invaild Binary. But Apple has also sent a message in detail.:

Dear developer,

We have discovered one or more issues with your recent delivery for "Conquer Online". To process your delivery, the following issues must be corrected:

iPhone 5 Optimization Requirement - Your binary is not optimized for iPhone 5. As of May 1, all new iPhone apps and app updates submitted must support the 4-inch display on iPhone 5. All apps must include a launch image of the appropriate size. Learn more about iPhone 5 support by reviewing the iOS Human Interface Guidelines.

Non-public API usage:

Apps are not permitted to access the UDID and must not use the uniqueIdentifier method of UIDevice. Please update your apps and servers to associate users with the Vendor or Advertising identifiers introduced in iOS 6.

If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed.

If you think this message was sent in error and that you have only used Apple-published APIs in accordance with the guidelines, send the app's nine-digit Apple ID, along with detailed information about why you believe the above APIs were incorrectly flagged, to . For further information, visit the Technical Support Information page.

Once these issues have been corrected, go to the Version Details page and click "Ready to Upload Binary." Continue through the submission process until the app status is "Waiting for Upload." You can then deliver the corrected binary.


The App Store team

Can see, apple said two, iPhone 5 Optimization Requirement/Non-public API usage, is just 5.1 when new requirements.

a. iPhone 5 Optimization Requirement

   IPhone5 and iPad after all screen gap there, and before we submitted are iPad Version (app to iTunes a, display the profile will be able to see the application platform app). Finally found the app make oolong, made at the same time to support iPhone.

   See the project settings, Long ago Targets-> Summary-> Devices has been Universal, Targets->Build Settings->Combined->Deployment->Targeted Device Family has also been reflected in the iPhone/iPad (project.pbxproj, TARGETED_DEVICE_FAMILY = "1,2", 1 is the iPhone, 2 is the iPad. )

   Why before will be considered only iPad.

   Checked on the net, in addition to the original project.pbxproj, but also associated with xxx-info.plist. More recent modification, which added a



   Cause processing to Apple as a Universal program, and, even if the value of project.pbxproj is changed to iPad, also will think so. Though in my opinion, info.plist is not clear, the setting of project.pbxproj is clearly visible, apple ignore project.pbxproj and go to the info.plist, it is boring.

   Info.plist multi out deleted items, you can see the iTunes has considered iPad program, upload the results also show that Apple no longer take iPhone5 interface that thing.

Some add:

I. note, this is because we had also been is a iPad program, rather than a Universal program, it is only in order to avoid this, one has in the procedure of Universal to get a iPad version of the upload, apple is not recognized. See

Ii. iPhone5 on the Retina.

   Then in the simulator test. Select the device iPhone (Retina 4inch simulator). If we find out the screen width is 960, rather than the expected 1136. A likely because no add a piece of Retina (4-inch) launch Images. Usually, this file will be named.

   But this file exists in the Rescources (file itself), can see is not in the Project Navigate. Also need to make sure that the Target-> Summary-> iPhone/iPod Deployment Info-> Launch Images-> Retina (4-inch) on this lattice solid can see the picture.

   Add up, apple is considered a iPhone5 Retina procedures, otherwise the machine will also bring a black edge problem (of course to take out the code itself width rather than 960 to do, otherwise how again with no use)

b. Non-public API usage.

   List above actually said a problem, use UDID, uniqueIdentifier or UIDevice.

   In fact, our own code has to confirm no use it, it can only be no source third party libraries.

   At present, the project used 5 such libraries. And the last time in addition to the Google engineers say they never used in the UDID GA, the other 4 out of the 3 have been updated to remove the UDID version.

   A slightly appearing nervous in public the rest, no user name password do not give SDK, not to see the Release Note.

   Had to find related to the students to the username and password, and then look at the Release Note, remove the UDID update version no release date, but the next version can see was released in 2012, although the clear version does not look at the code, but the.H found in copy right 2009-2011, that is 2011 database is used.

   Updated to latest compile and upload, apple did not say this problem, so that it is this problem of Library.

2 traditional upload trouble.

   Perhaps now is the strict requirements of the application, may be in different regions is not the same as the audit team. Version already approved foreign operation for a long time, submit the audit in the traditional first, because UI was declined, and the complaint is not recognized.

   I don't like apples:

A. simultaneous operation of multiple interfaces in the game, if it is really necessary, hope you open this put that off, or make mode.

B. such as user feedback and so on, he has a standard set of things, don't like you get a UI to do.

   In the dialog box has a unified management, workload is ok. In the audit had to have a look, is it right? Effective.


Re signed script

Source based on security considerations, the company code in the network, not even to the external network, the program can not directly submitted by XCode. And the last of the integration of resources, update one or two configuration, also need to re sign. To avoid this problem, the signature method under XCode, thick made a re signature script resign, can through Apple's approval

unix shell, If the copy directly pay attention to end of line to UNIX line, and to the script empowerment(e.g. chmod 777 resign).

The contents are as follows

[plain] view plaincopy

  1. #resign  
  2. #Ruoqian, Chen<>  
  3. #2013.3.19  
  4. #  
  5. #resign a ipa package, get a file named resigned.ipa in current shell path  
  6. #----------  
  7. #usage  
  8. #resign $ipaPath  
  9. #e.g. resign iOS_Sample.ipa  
  10. #----------  
  11. IPA=$1  
  12. PROVISION="/Users/nd/Documents/resign/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.mobileprovision"  
  13. CERTIFICATE="Banana Inc." # must be in keychain  
  14. CENT="/Users/nd/Documents/resign/resignEn.xcent"  
  15. export CODESIGN_ALLOCATE="/Applications/"  
  16. # unzip the ipa  
  17. rm -rf Payload  
  18. unzip -q "$IPA"  
  19. # remove the signature  
  20. #rm -rf Payload/*.app/_CodeSignature Payload/*.app/CodeResources  
  21. # replace the provision  
  22. cp "$PROVISION" Payload/*.app/embedded.mobileprovision  
  23. # sign with the new certificate  
  24. /usr/bin/codesign -f -s "$CERTIFICATE" --resource-rules Payload/*.app/ResourceRules.plist --entitlements "$CENT" Payload/*.app  
  25. # zip it back up  
  26. zip -qr resigned.ipa Payload  
  27. codesign -dvvv Payload/*.app  

The process may be prompted to enter a username and password to complete the re signature process.




This three volume needs to be replaced according to the project situation, , The first two are the signature authentication, CENT is also the relationship between project their own settings, In the type such as DervedData-> $ProjectName$-> Build-> Intermediates-> $> Distribution- iphoneos-> $ProjectName.Build-> $ProjectName.xcent. (this path can be compiled with the information in the XCode to check)

If you don't love a turtle speed iTunes, manual do worry about mistakes, or don't love every path to a relatively fixed length finder in the dug app, can use this


[plain] view plaincopy

  1. #resign  
  2. #Ruoqian, Chen<>  
  3. #2013.4.17  
  4. #  
  5. # get a ipa from a ipa package, dest /Users/nd/Documents/Release  
  6. #----------  
  7. #usage  
  8. #GetRelease $appPath  
  9. #e.g. GetRelease  
  10. #----------  
  11. DEFAULT_DEST_DIR="/Users/nd/Documents/Release"  
  13. APP=$1  
  14. ext=${APP##*.}  
  15. if [ $ext != "app" ]  
  16. then  
  17. echo "agrv must with the format *.app"  

  18. else  
  19. name=`basename $APP .app`  

  20. file=`basename $APP`  

  21. rm -rf $DEST_DIR/$name.ipa  

  22. rm -rf $DEST_DIR/Payload  

  23. mkdir $DEST_DIR/Payload  

  24. cp -R $APP $DEST_DIR/Payload/$file  

  25. cd $DEST_DIR  

  26. zip -qr $name.ipa Payload  

  27. fi  

But the two should pay particular attention to routing problem. Don't get me wrong.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download

Posted by Tom at March 04, 2014 - 9:11 AM