iOS HERE SDK NMAKit private API usage - ios

I just updated my app to the latest 3.13.2 HERE SDK version but once I uploaded a build to the App Store I got the following warning:
The app references non-public symbols in Frameworks/NMAKit.framework/NMAKit: _getcontext, _makecontext, _setcontext
I haven't tried submitting a build with this warning actually to App Review but this warning doesn't bode well and even if it did make it through would most likely increase the review time for my app significantly. My app relies on the HERE SDK for its navigation features so as such I can't just remove it completely. For now I've rolled back to a previous version which doesn't give this warning for uploaded builds.

In 3.13.2 HERE SDK, openssl library was upgraded to 1.1.1c version which causes such error.
In order to fix it, openssl configuration needs to be changed. It is planned to be implemented in next HERE SDK(3.14) release.
Since it is just warning you can still try submitting your app.
Thanks for reporting!
UPDATE:
Warnings have been fixed in 3.13.3, which is available now.

I experienced the same problem as you with v3.13.2. Meanwhile, my workaround is to use and older version: 3.12.2 and it works. So, just add this in the pod file:
pod 'HEREMaps', '3.12.2'
Hope it helps!

Related

UIWebView Deprecation and App Store Rejection on Xamarin Forms

Can i fix the following ?
My setup
Xamarin.iOS Version: 13.16.0.13 (Visual Studio Community)
Visual Studio Community 2019 for Mac Version 8.5.2 (build 13)
Xamarin.Forms 4.5.0.617
I follow the instruction here
https://learn.microsoft.com/en-gb/xamarin/xamarin-forms/user-interface/webview?tabs=macos#uiwebview-deprecation-and-app-store-rejection-itms-90809
and here
https://github.com/xamarin/Xamarin.Forms/issues/7323#issuecomment-542363338
to fix this problem
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no
longer accepted. Instead, use WKWebView for improved security and
reliability.
but i get the following error on publish
Thank you!
As Microsoft mentions in the Microsoft blog, this is fixed in Xamarin.Forms 4.6
Now in 4.6, we are updating the bindings to Google’s library. We have
improved the styling support for things like, setting a button’s
‘Disabled’ text color. The latest library also removes the reference
to Apple’s deprecated UIWebView.
So update your Xamarin.Forms to Version 4.6.
Adding --optimize=force-rejected-types-removal in mtouch arguments works. I have submitted to TestFlight and I did not get email about UIWebView removal.
I dont know why, but when i changed my app's version number and build number it's worked. Also i create a new app version on App Store Connect.
Same errors in this link helps me
https://forums.xamarin.com/discussion/172296/app-store-connect-application-loader-publishing-failed-failed-to-parse-altool-output
Is two different errors I believe. The first is from deprecated UIWebView and another error (publish error) showed up after the first rejection from apple.
Thanks.
This is not an answer, but I share my experience on this particular issue I also have. Maybe it would helps.
When pusblishing to Apple App Store Connect a new app after April 1st 2020, apple could reject your app if you are using UIWebView. Apps submitted before have warnings, but thoses app will not be submitable past December 2020.
My app is new and I publishing after April 1st. I had some hard time publishing this app using VS 2019 Mac and the archive process. I don't like it. You can have a green screen during publishing and see nothing on the appstoreconnect. This is because Apple reject your app. See your emails, you have :
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability
I suggest to use a archive on your disk and use Transporter app to upload it. It has a log view and warns me about build number issue.
Back on my app, I try the mtouch argument --optimized trick but it doesn't work. I tried Don't link, Link SDK only, Link all to be sure. None worked. Apple keep saying I am using UIWebView. I check my code, I cannot see UIWebView anywhere.
So I wanted to try a fresh app from scratch using last version of Xamarin.Forms 4.6 and publish it. I had the same issue message by Apple. Then I add the --optimizer mtouch argument and publish it. Apple was satisfied. So this means that the "patch" is working.
So as my code doesn't have any UIWebView, I think this could be a tiers library... But how to find... I am try this https://levelup.gitconnected.com/how-to-find-and-remove-uiwebview-uses-in-your-ios-app-d9395f7baacc
The command gives me this :
FirebaseCore
FirebaseCoreDiagnostics
GTMSessionFetcher
GoogleAPIClientForREST
GoogleDataTransport
GoogleDataTransportCCTSupport
GoogleToolboxForMac
GoogleUtilities
PersonalizedAdConsent
U _OBJC_CLASS_$_UIWebView
leveldb
libSkiaSharp
nanopb
protobuf
So I presume those libs are not "compatible"...?
I will update if I find something...

How to resolve app validation "The app references non-public selectors in Payload/MyApp.app/MyApp: _setAlwaysRunsAtForegroundPriority:"?

Just days ago I successfully upload Ionic app to Apple Store, and on this day I am receiving validation warning:
The app references non-public selectors in Payload/something.app/something: _setAlwaysRunsAtForegroundPriority:
While I was unable to resolve, I was able to upload app to App Store.
Does anyone know where it is documented or have any insights on how to resolve?
Thanks.
Expanding on #Véger Lóránd answer:
The bug was re-introduced in the 4.1.1 version. Installing the latest version will get your app rejected.
The solution for now is:
cordova plugin rm cordova-plugin-ionic-webview
cordova plugin add cordova-plugin-ionic-webview#4.1.0
I got a similar problem:
ITMS-90338: Non-public API usage - The app references non-public selectors in MyAppName: _setAlwaysRunsAtForegroundPriority:.
And the issue was caused by the following plugin: cordova-plugin-ionic-webview
To solve the issue update to the latest version with the following commands:
cordova plugin rm cordova-plugin-ionic-webview
cordova plugin add cordova-plugin-ionic-webview#latest
You can read more about it here: https://github.com/ionic-team/cordova-plugin-ionic-webview/issues/209
This worked
The problem is related to webview.
cordova plugin rm cordova-plugin-ionic-webview
cordova plugin add cordova-plugin-ionic-webview#latest
this is only security warning caused by webview. you can ignore
rejected on Appstore now. July 3th 2019.
Message:
We identified one or more issues with a recent delivery for your app, "appname. Please correct the following issues, then upload again. ITMS-90338: Non-public API usage - The app references non-public selectors in Sonnenbraeu: _setAlwaysRunsAtForegroundPriority:. 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 ...
I removed the complete line of _setAlwaysRunsAtForegroundPriority: as described above from code. Also the references to it. And yes, the app got released. BUT I don't know exactly the consequence of removing the property which sets the browser to foreground priority mode. I don't think its a good solution, its just a provisoric workaround to get released.
ITMS-90338: Non-public API usage - The app references non-public selectors in XXXXXX: _setAlwaysRunsAtForegroundPriority:. 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 Apple ID, along with detailed information about why you believe the above APIs were incorrectly flagged, to appreview#apple.com.
cordova plugin rm cordova-plugin-ionic-webview cordova plugin add
cordova-plugin-ionic-webview#latest

iTunes Connect CFBundleShortVersionShort must contain a higher version

Today Xcode is giving me problems when attempting to upload a build to iTunes connect. It's giving me the following errors:
What's very strange is my application's CFBundleVersionShortVersionString is 2.0.0. I uploaded a build to TestFlight yesterday and it worked just fine. Then I did a search for CFBundleVersionShortVersionString, and I found a 1.0.0 and 0.5.1, but they were in the info.plist in the Pods. Why is this error all of a sudden appearing? I know I'm not supposed to change anything in the Pods. Has anyone come across this issue and if so how can you fix this?
It looks like there was an issue created for this same issue in CocoaPods - https://github.com/CocoaPods/CocoaPods/issues/4421
blixt mentions...
I think it's the iTunes Connect servers entirely, and not Xcode 7.0
nor Xcode 7.1. This issue appears to have started around 10 am PDT. It
is definitely a bug, and we fixed it by bumping our dependency's
Info.plist CFBundleShortVersionString up to the same version as our
app, and voila – iTunes Connect accepted the bundle.
This is an annoying fix but it seems like fixing the individual Info.plist files short version (that your dependencies may have) up to your app version should get you passed this error for now. This is definitely not a long term solution though.

Non-public selectors in App?

I'm trying to submit an app via iTunes Connect. Xcode is throwing the following error:
iTunes Store operation failed.
The app referenced non-public selectors in Payload/Inflation Calculator.app/Inflation Calculator: allocBatch:withEntity:count:,allowWithEntity:, fastIndexForKnownKey:, indexForKey:
I have no idea what "non-public selectors" I would be using, because I stuck pretty close to the book with my code. Anyone have any ideas?
Code for the view controller (only .swift in my app):
https://gist.github.com/Calda/aefc2f19bae5f3cf2e54
EDIT: As a reference for the future, I confirmed with iTunes Connect Support that this was an issue with iTunes Connect and not a problem with my project. For anyone experiencing this same problem, my best advice would be to wait and try again later.
I had the same problem. I could not submit some of my apps because using non-public selectors. I also tried using Application Loader, but still the same error message
To solve the problem I installed Xcode 6.0.1 - it is still available to download here:
https://developer.apple.com/downloads/index.action
Before installing i moved the old Xcode to trash.
I can now submit any app.
I solved this by doing the following:
edit: I don't think the first step is needed
1) Cleaning the build folder (Hold Alt, Click Product -> Clean)
2) Deleting the Derived Data (Organizer -> Projects -> Select your project -> Delete Derived Data
The API differs between iOS 7 and iOS 8.
I got my App validated by switching to Deployment Target "8.0" - built with XCode 6.1.
It might not be the solution to all you guys but you could give it a try.
Might have happened to me because I recently started using UIAlertController -> seems to be an iOS-8-Feature. On iOS 7 this would be UIAlertView. So if you use some nifty new features they might not have been available with previous iOS versions - thus non-public API.
For the same app, I got this error today on XCode 6.1.
I submit the same app (little variation) 2/3 days ago with XCode 6.0.1 without any error!
Just updated XCode 6.1 and trapped with this error.
I switched back to XCode 6.0.1 and it do not have any problem with the submission. No non-public API usage error. I just download the dmg file and rename xcode.app to XCode_6.0.1. So it coexists with XCode 6.1.
I delete all derived data for xcode projects
/Users/{user_home_folder}/Library/Developer/Xcode/DerivedData
And app was submitted without any problem
I was running into the same issue that looked like an issue on Apple's end. I submitted the same app (v 1.0.1) yesterday, then rejected it, then submitted again today with a one-line code difference. Today's submission got rejected for the reason mentioned above.
I was able to solve this, using the latest versions of everything, by changing the version # of my app (e.g. 1.0.1 -> 1.0.2). Think this worked as I had a previous submission sitting in the queue for my older version that I had rejected, YMMV.

AppStore Submission - Missing or invalid signature - com.google.GPPSignIn3PResources

I'm trying to submit an iOS app to AppStore and I'm having the following error:
ERROR ITMS-9000: "Missing or invalid signature. The bundle
'com.google.GPPSignIn3PResources' at bundle path
'Payload/My_app_name.app/GooglePlus.bundle' is not signed using an
Apple submission certificate."
I've submitted this app before I've never had this problem. Does anybody know if there is any recent change?
Update:
I could submit the app about 6 hours before having this error. Then, my app was rejected with this message:
This bundle is invalid - New apps and app updates submitted to the App
Store must be built with public (GM) versions of Xcode 5.1.1 or higher
and iOS 7 SDK. Do not submit apps built with beta software.
After this, couldn't submit anymore.
Update2:
Google has made an announcement about this:
http://googledevelopers.blogspot.com.br/2014/09/an-important-announcement-for-ios.html
A new version was released, solving the problem.
Just remove files below and build your app as usual!
GooglePlus.bundle/GPPSignIn3PResources
GooglePlus.bundle/GPPCommonSharedResources.bundle/GPPCommonSharedResources
GooglePlus.bundle/GPPShareboxSharedResources.bundle/GPPShareboxSharedResources
Google released the version 1.7.1 of the google plus sdk.
I created a new podspec for the 1.7.1 version as the previous owner is not reachable.
Just add into your Podfile:
pod 'googleplus-ios-sdk', '~> 1.7.1'
Adding the --deep flag to Other Code Signing Flags (OTHER_CODE_SIGN_FLAGS) in the Project (not target) settings seems to fix this.
The correct fix is to upgrade to the 1.7.1 version of the Google Plus iOS SDK.
It seems to have been specifically released to fix this problem.
If you diff the 1.7.0 and 1.7.1 bundles you will see that no files were added, but three files were deleted : GPPSignIn3PResources, GPPShareboxSharedResources and GPPCommonSharedResources - the three files that the App Store was complaining about.
Adding --deep flag didn't help me, so I solved the issue in a simple and elegant way (sarcasm detected). I removed Google+ SDK from Podfile, then downloaded SDK from here and installed it in a old-fashioned way.
my solution for Google Plus looked this way
deleted the 3 bundles from frameworks from my project
downloaded new Version 1.7.0 (had to upgrade anyway)
i opened the GooglePlus.bundle and removed 3 files (GPPSignIn3PResources,GPPShareboxSharedResources.bundle,GPPCommonSharedResources.bundle) as all 3 files will give you a warning in itunes
I added the 3 bundles back to frameworks
i tested my Google + login in app ... works
submitted ...
and run into a new issue (arm64 requirement), unrelated to this one :)
I think this should work if you don't need the resource files like login button.
If --deep doesn't work, then chances are that the bundle is simply resources and does not actually have any executable file. Delete its Info.plist and you'll be good. If there's some reason you actually need Info.plist, at least delete the CFBundleExecutable key.
I had the same error when I tried to submit the app with xcode 6.1. Nothing worked and I really tried everything.
Then I found a solution on apple developer forums. It worked for me:
Go into Keychain Access
Go into Login keychain
Delete Apple World Wide Developer Relations Certificate Authority
Go into System keychain
Delete Apple World Wide Developer Relations Certificate Authority
Download new WWDR certificate
Install it in Login keychain (just clicking it did that)
link: https://devforums.apple.com/message/1072465#1072465
This issue appears to have been fixed today by Apple, after being broken for ~24 hours.
Submitting the same app today, with no changes to the .bundle, no longer throws the error.
--deep code signing of the bundle is not required.
(Note that I did not test this with the specific Google bundle that the question references. The Resources Bundle that our app uses, though, now works correctly and no longer throws the error.)
Google just released an updated version 1.7.1, which can be downloaded from their website https://developers.google.com/+/mobile/ios/getting-started. Currently it's still not mentioned in their Release Notes though.
If you're using cocoapods you can copy the current 1.7.0 podspec, create a local one and change all the version references in their to 1.7.1 until the new one is merged into the official cocoapods repo.
You should also remove info.plist files
GooglePlus.bundle/info.plist
GooglePlus.bundle/GPPCommonSharedResources.bundle/info.plist
GooglePlus.bundle/GPPShareboxSharedResources.bundle/info.plist
By removing all Info.plist file form goolepplus.bundle file work for me.

Resources