How to fix if App rejected for using UIWebView in code? - ios

I have been trying to upload an iOS app to Appstore but its only appearing on "Activity" tab for 3-5 minutes and then disappears.
Then I got an email from Apple saying that my app is rejected because it is using UIWebView in one of the view controller. I deleted that particular screen and reuploaded the app and had the same error email.
Then I checked my third-party sdks like FacebookLoginSDK and GoogleSignInSDK and updated those and then checked that if the app has no UIWebView which it did not. Then i reuploaded the app but this time again I had the same error email. I have searched the whole storyboard source code and the whole app code to look that if there is any sign for UIWebView but there is nothing, but still I am getting this email.
I also tried deleting 'Derived Data' folder several times and cleaning the build folder also but nothing helps.
On the other hand I have uploaded a different app today which had UIWebView and it got approved but I also got the same email for not using UIWebView.
Does anybody had this kind of experience or can anybody tell me whats going on ?

I got the same issue before.
If you have uploaded the build and showing it in activity tab for few minutes then its not mean that issue is only about UIWebview but there can be some other issue as well.
I have uploaded my app n got the mail related to UIWebview, so I coverted the UIWebview to WKWebView and again I uploaded but that time same thing happend.
I failed to tackle the problem.
Then I mailed to Apple Developer Support and they replied like
Any of the third party library internally using some privacy data you should ask permission for the same.
Then I checked Info.plist, I have given each permission in list still how it comes that we don't understand.
Finally then after whole search the one third party library internally using motion related data without permission so this happened.
Then I have added that in plist and then again uploaded and its approved.
So please you can check your info.plist and also check whether your third party library using any privacy sensitive data without permission or not.
May it help you at some point.

Make sure you update all your plugins to the latest version!
Check this: https://ionicframework.com/blog/understanding-itms-90809-uiwebview-api-deprecation where you can find the plugins that have known issues concerning the old WebView usage.
But be aware that uninstalling and re-installing some plugins will NOT will not install the latest available version of the plugin!
So to be sure that you are re-installing the latest version of a plugin, go to the github repository of the cordova plugin and search for the plugin.xml file and open it. Then, copy the version string found in the root xml element.
Finally, install the plugin like that: ionic cordova plugin add plugin_name#copied_version
<?xml version='1.0' encoding='utf-8'?>
<plugin id="cordova-plugin-firebase" version="2.0.5"
xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android">
<name>Google Firebase Plugin</name>
...
...
...
</plugin>

Are you using the AdMob plugin?
It is not enough to check for the absence of "UIWebView" strings!
You have to make sure that all third party plugins are up to date.
One of the trickiest situations I had went to is when I had tried to update an app (using AdMob) on the AppStore after Apple started rejecting apps using the UIWebView.
The generated iOS source code has no UIWebView references, but still rejected!
After a long headache, I realized that the Google AdMob SDK version I'm using is out of date, knowing that I had updated the AdMob plugin from the CLI, but it seems that the SDK is not updated when updating from the npm.
Finally, I had downloaded the latest AdMob SDK from this link https://developers.google.com/admob/ios/download and replaced it in the source code of the AdMob SDK plugin. Then I had followed the instructions found in this link https://developers.google.com/admob/ios/quick-start to update the code in the xCode.

Related

Flash Builder SDK issues

So I needed to install a new SDK to use the Compass ANE that I purchased. Which I did and the issue that I had with it was that the "TabbedViewNavigatorApplication" was not a supported component. So, after some research, the problem was with the new framework file. I took the framework file from the original 4.6.0 (file location shown below):
C:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\sdks
and put that in the new SDK file. This fixed this issue but now I have another issue where the old code I had working has now broken.
GeolocationEvent.UPDATE is no longer being called
Camera.setMode() causes a crash
UIComponent.addChild(Video) causes a crash
I am able to run the program with no errors.
Event is not being triggered for Geolocation in Flex
This person had a similar problem to me and he says he fixed his issue but I can't work out what he did:
I worked out the ultimate cause of this specific problem. It stems from Flash Builder not installing the complete Android SDK or the IOS SDK. Once I manually installed these by copying the SDK folders to their correct paths in Adobe Flash Builder, my GPS events were called successfully.
To sum up, if you get this trouble where the code and everything looks alright but it wont call up your events, then check to make sure that your latest SDKs for Flex are installed correctly for Android and or iOS
I haven't done any work with flex SDKs and if anyone can either recommend a place to download one which supports these features or has any advice on how to fix my issue I would be most grateful.
Solved issue. In case anyone looks for this, my old SDK would allow me to run the app from a device without requesting for permission for geolocation event. The new SDk forces you to use the permission status event.
Makes sense to me now. Just wish I had an error pop up asking for permission rather than just doing nothing.

XCode Project Invalid Bundle on App Store Upload

When submitting our app to the app store the validation process for the build keeps getting rejected with the following error.
Invalid Bundle - One or more dynamic libraries that are referenced by your app are not present in the dylib search path.
Has anyone else had issues with this error? I feel like I've tried just about everything. I'd done the suggested otool -L on the main app as well as the watch app. The only library that it shows linked for is the Mixpanel library. The only other two libraries we are using is Fabric and Crashlytics. From my understanding those are not actual real frameworks? I've also tried to set ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES to YES as many posts online suggest. The project builds and runs fine so I'm completely lost as to how to resolve this issue.
This is a React Native iOS app if that has anything to do with it. I'm not the most experience when it comes to iOS stuff but I can find my way around xcode. Anyone have any suggestions? Maybe the best solution is to just create a new xcode project and set everything up again and copy/paste in the code from the previous project?

iTunes Connect Errors occurred in the app thinning process, and your app couldn’t be thinned?

I Uploaded the build via Xcode Yesterday it worked fine but while uploading today the build is uploading perfectly but after 10 minutes i got a email form apple stating that.
While processing your iOS app, ---------------Build(1.0.22), errors
occurred in the app thinning process, and your app couldn’t be
thinned. If your app contains bitcode, bitcode processing may have
failed. Because of these errors, this build of your app will not be
able to be submitted for review or placed on the App Store. For
information that may help resolve this issue, see Tech Note 2432.
I only changed the one line of code and changed the Build Number. And, I uploaded 4 build got the same Error.
I met with this issue today, I used google-api-objectivec-client-for-rest (as framework).
I tried all the solutions above, but failed.
Now I fixed it by copying all the source of google-api-objectivec-client-for-rest to my own project. Hope it helpful to you.
MY SOLUTION THAT DID NOT WORKED BUT MAYBE CAN GIVE U A WAY OUT
In My own case, i developed my IOS APP with PhoneGap
After so much research, was told to disable bitcode from my ItuneConenct App Account https://developer.apple.com/library/mac/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/ChangingAppStatus.html
And was introduced to a new phonegap plugin to disable bitcode in my IOS APP https://www.npmjs.com/package/cordova-plugin-cs-disable-bitcode
which i added to my Phonegap app config.xml file
Yet after rebuilding my phonegap IOS app and uploading to ItunesConenct using Application Builder (Got a successful message from the upload). Few mins' after the upload, I got same message from Apple with the same error.
This can give you a hint
Finally got it to work. In our case, the error was in one of the embedded frameworks. Generating a Production Ad-hoc build and then trying to export it generated an error message that pointed us to an error in a setting within one of the framework files. The framework has been there for a while and we never had any issues with it until this release.
I had the same problem and I found the solution. In my app, I had the Google Plus framework: GoogleOpenSource.framework. This framework was the problem. I searched about the latest update in Google Plus: https://developers.google.com/+/mobile/ios/upgrading-sdk.
The latest version was 1.7.1. This version has the same problem. In my app, I removed the login with Google Plus (deprecated https://gyazo.com/685a58f98ee0b0fca16a6bd83636aad8) and I added Google: https://developers.google.com/identity/sign-in/ios/sdk/
This works for me.
A greeting.
Hey guyz My App has been approved by Apple Store.
The trick i used was this
Deleted the plugin folder on my App root directory before building
Because most plugins were not compatible with Apple has to use just few of them on my manifest file
<plugin name="org.apache.cordova.inappbrowser" />
<plugin name="org.apache.cordova.network-information" />
<plugin name="org.apache.cordova.splashscreen" />
<plugin name="cordova-plugin-whitelist" />
i was surprised when Apple sent me a message that my App has been Approved just now.
I Home this trick work for someone
If you are having this problem recently, i.e. since September 2016, it may be due to having a 'special character' in the title of your app.
I had several targets for the same code, some of which would process OK and some of which would fail. The ones that were failing all had Apple symbols in the title, for example one app was called '🇨🇲 Flags'.
Credit to Krati Rastogi: https://forums.adobe.com/thread/2205923
I had this happen a couple days ago and the temporary solution for me was to not include bitcode for iOS content, which is an uploading option (see image). Apple suggests to do an ad hoc export with an ad hoc provisioning profile to receive the errors and logs of the failure, but I'm unable to reproduce the error(s) and the ad hoc export is successful each time. Will update this post when I find out how to re-enable bitcode, but for now this seems like a good temporary fix. -Update: there was an error in the name of one of my project folders, mixup with symbolic folder name, when I corrected the name to match what was actually in the folder structure I was able to upload properly-
I've experienced the same symptoms and have found a solution.
The root cause of the issue is invalid/incorrect keys in a given bundle's embedded Info.plist.
This is typically the .bundle contained within a third party library e.g. GoogleMaps SDK.
The steps for remediation are:
For each .bundle containing only resources:
Remove the key/value CFBundleExecutable
Change the value for key
CFBundleSupportedPlatforms to iPhoneOS (Item 0, first element in the array. The previous value was iPhoneSimulator in my case)
The technical reason is that CFBundleExecutable should not be present in a bundle's plist if there is no executable. The value for CFBundleSupportedPlatforms is self explanatory, it should be iPhoneOS.
Tech Note 2432 mentions the above two keys but does not elaborate how to resolve the issue.
I hope this solution works for you.
As another user above stated... Remove the Plug In Directory and it solves the problem!
I just uploaded a fully functional version of my App with all of my Plug Ins. When I use build.phonegap.com to compile my IPA file, I have no Plugin folder in the ZIP file. The plugins are correctly referenced in my config.xml file.
It works!
I have no clue why this was ever an issue, but that is the ticket to move forward!
Finally, I made this work!!!
Just like #applejack42 said, you must remove CFBundleExecutable key of all 3rd party library info.plist file.
In my case, I just remove this key from JSONModel info.plist, and submit.
Success!
I really hope it works for you, because that issue make me crazy.
update xcode to 8.0 which published at 0914 from apple store , rebuild project and submit to iturns , the issue was not found , instead any detail info for anouther issue which use ios 10 sdk required . i have submited success, and waiting for approval .
Ive attempted various build and submitted to Itunes with Xcode 8 and 7, with no success.
Deleting my plugins folder was not the solution, neither was greping through all my .plist's to find the CFBundleExecutable. At this moment its just waiting on further discovery from the community and or returning to our 3rd party resources and asking them to update their libs which may not be as easy as apple is suggesting us to do.
To identify the affected libraries I built to an iPhone with Bitcode enabled and in my case their are three libs that need updating. This may not be the best solution but if you need an explanation for your superiors this may save you some time in identifying what needs updating.
I will update my thread as I continue along this road.
Apple recommends to test by archiving the app first and then exporting the app for ad hoc distribution. If there are errors, you can then see this in the logs, you can access them from the export dialog.
My favorite solution, if there is no error during export:
update cocoapods
run pod install
clean the project and resubmit
It just worked for me, no clue why, but it might be worth a try instead of wasting hours on finding a solution for a non existant problem ;)
For me the Issue was that one of my frameworks wasn't embedded and signed . hope that might help someone
I have met with this situation with Xamarin IOS Project in Visual Studio
I have solved in
Clean All
Rebuild All
then archive your project

Google Clould Messaging (iOS) put files in default app Documents folder

I would like to turn on UIFileSharingEnabled to let users of my app save some files in their pc.
The problem is that a Google library is putting files inside the main Documents folder of my app without letting me specify a different destination.
This way, if I turn on UIFileSharingEnabled, this is what the user can see and interact with (download or delete!)
The 3 folders are mine, so I can move them out easily, but the 3 .plist files are a problem. I cannot move them without breaking google functionalities.
I use Cocoapods for loading them inside my project.
pod 'Google/Analytics', '1.0.7'
pod 'Google/CloudMessaging', '1.0.7'
Any idea on how to fix this? I'm stuck in this situation.
Thanks
UPDATE: This issue is finally fixed in Firebase version 3.4 from 1 Aug 2016: "plist files used by FIRMessaging are now stored in an ApplicationSupport directory." (source)
Six months later I have the same problem. It turned out GCM developers have failed to fix this bug. I opened another issue (here) and they confirmed this is not fixed yet. In the meantime Google have announced Firebase Cloud Messaging will inherit GCM. I removed GCM form my app and integrated Firebase. However the issue is still reproducible. These four files are created upon app launch:
com.google.iid-keypair.plist
com.google.iid-tokens.plist
g-checkin.plist
rmq2.sqlite
I've logged a bug request to Firebase support. I'll update my answer when I see this issue fixed.
Till then I do not recommend to use Firebase Messaging in an iOS application. Your app may be rejected from the App Store for writing temp files to Documents directory.
Just so you know, I reported the issue on github.
https://github.com/google/gcm/issues/120
Yesterday a Google guy said it will be fixed in the next version! Yeah!

The app references non-public selectors in Payload/Cordova350.app/Cordova350

I have written and exported a Cordova 3.5.0 PhoneGap Application using the Telerik Platform. The app is using jQuery Mobile and an InAppPurchasing plugin.
The only other plugins used are Cordova Splashscreen and Cordova Statusbar.
I can run the app no problem when i install it via iTunes on to my iPad. However, when I submit the app via Application Loader, I get the following errors:
I was tempted to go in and edit/look for the lines that reference these 'non-public selectors' myself but the Cordova350 file is a unix executable file that when opened looks like bytes of hex codes.
I cant seem to find anything from googling around about anyone experiencing a similar issue. Is this just a setting somewhere I have forgotten to untick? Any help would be appreciated

Resources