IPA (built by Xamarin.iOS) be rejected by Apple Store - ios

After uploading my application to the Apple Store, I received this email from Apple:
Guideline 2.5.2 - Performance - Software Requirements
During review, your app installed or launched executable code, which
is not permitted on the App Store. Specifically, your app uses the
itms-services URL scheme to install an app. Important Information As a
result of violating this guideline, your app’s review has been
delayed. Future submissions of this app, and other apps associated
with your Apple Developer account, will also experience a delayed
review. Deliberate disregard of the App Store Review Guidelines and
attempts to deceive users or undermine the review process are
unacceptable and is a direct violation Section 3.2(f) of the Apple
Developer Program License Agreement. Continuing to violate the Terms &
Conditions of the Apple Developer Program will result in the
termination of your account, as well as any related or linked
accounts, and the removal of all your associated apps from the App
Store. We want to provide a safe experience for users to get apps and
a fair environment for all developers to be successful. If you believe
we have misunderstood or misinterpreted the intent of your app, you
may submit an appeal for consideration or provide additional
clarification by responding directly to this message in Resolution
Center in iTunes Connect.
I have read this existing question. And then I removed the usage of JSPatch.
However, I received the same email after upload again.
I then checked my project: there are no method like dlopen() or dlsym() used?
So, what is causing this issue? Or how can I found out what causes it?
Is there any difference from Xamarin.iOS and native iOS?

If you use some third-party libraries, these private methods may be called in somexxx.a files. You can use the command line nm -u xxx.a >> xxx.txt to print the information of the library and check that whether it contains the methods mentioned above .

Related

App review "rejection clarification" no longer available on app store contact form

My app was rejected when being reviewed for the iOS App Store. It appeared there was a technical inconsistency when running the app on the reviewing device versus devices I used for testing. I opened a Technical Support Incident (TSI), as I believed I needed technical support in order to further investigate the issue. They responded with the following:
App Review has found an issue with your app that requires a technical investigation. To initiate this investigation, request a rejection clarification using the "Contact the App Review Team” form:
https://developer.apple.com/appstore/contact/?topic=clarification.
When completing the form above, please include the name of your app and its associated Apple ID.
However, it seems that "rejection clarification" is no longer an option on this website:
I'm wondering if anyone has faced a similar issue, and what is the best way to proceed?
I got the following response from Apple Developer Technical Support (DTS):
You would select 'appeal an app rejection or app removal' and request diagnostic information from the devices used (if it is available).

Apple rejected the binary (2.3.1 - Performance) React Native 0.61.0-rc.3

My first app with React Native to the Apple App Store has been rejected because they say, "... it contains hidden features, hidden features. Specifically, your app includes support for Hot Update functionality that allows your app to download a new main.jsbundle anytime. It would be appropriate to remove this functionality from your app."
It's a fairly simple app with a search to Firebase Realtime database for jobs.
I've spent hours scouring the net for answers, have about 4 Case numbers with Apple requesting specific information as to exactly where it sees the problem - still waiting.
Has anyone encountered and solved this problem? Detailed message from Apple below.
Guideline 2.3.1 - Performance
We discovered that your app contains hidden features.
Specifically, your app includes support for Hot Update functionality
that allows your app to download a new main.jsbundle anytime. It would
be appropriate to remove this functionality from your app.
The next submission of this app may require a longer review time, and
this app will not be eligible for an expedited review until this issue
is resolved.
Next Steps
Review the Performance section of the App Store Review Guidelines.
Ensure your app is compliant with all sections of the App Store Review Guidelines and the Terms & Conditions of the Apple Developer
Program.
Once your app is fully compliant, resubmit your app for review.
Submitting apps designed to mislead or harm customers or evade the
review process may result in the termination of your Apple Developer
Program account. Review the Terms & Conditions of the Apple Developer
Program to learn more about our policies regarding termination.
Guideline 2.5.2 - Performance - Software Requirements
Your app, extension, or linked framework appears to contain code
designed explicitly with the capability to change your app’s behavior
or functionality after App Review approval, which is not in compliance
with App Store Review Guideline 2.5.2 and section 3.3.2 of the Apple
Developer Program License Agreement.
This code, combined with a remote resource, can facilitate significant
changes to your app’s behavior compared to when it was initially
reviewed for the App Store. While you may not be using this
functionality currently, it has the potential to load private
frameworks, private methods, and enable future feature changes. This
includes any code which passes arbitrary parameters to dynamic methods
such as dlopen(), dlsym(), respondsToSelector:, performSelector:,
method_exchangeImplementations(), and running remote scripts in order
to change app behavior and/or call SPI, based on the contents of the
downloaded script. Even if the remote resource is not intentionally
malicious, it could easily be hijacked via a Man In The Middle (MiTM)
attack, which can pose a serious security vulnerability to users of
your app.
The next submission of this app may require a longer review time, and
this app will not be eligible for an expedited review until this issue
is resolved.
Next Steps
Review the Software Requirements section of the App Store Review Guidelines.
Ensure your app is compliant with all sections of the App Store Review Guidelines and the Terms & Conditions of the Apple Developer
Program.
Once your app is fully compliant, resubmit your app for review.
Submitting apps designed to mislead or harm customers or evade the
review process may result in the termination of your Apple Developer
Program account. Review the Terms & Conditions of the Apple Developer
Program to learn more about our policies regarding termination.
RESOLVED. About 8 months ago, new to RN and trying to update RN, I found a recommendation to install react-native-update. This is now called react-native-pushy in github and the instructions are in Chinese. However, if you paste them into Google translate, they talk about adding a config file to disable it in iOS. I removed it completely and the App Store approved it

Iphone App Rejected by apple App Store for 1.0 Binary Rejected [duplicate]

This question already has answers here:
Reasons for rejecting iPhone application by Apple store [closed]
(12 answers)
Closed 3 years ago.
They are saying This app duplicates the content and functionality of other apps submitted by your but this is my first app to be submitted and I never submitted apps before.
From Apple:
3 Design: Spam
Guideline 4.3 - Design
This app duplicates the content and functionality of other apps submitted by you or another developer to the App Store, which is considered a form of spam.
Apps that simply duplicate content or functionality create clutter, diminish the overall experience for the end user, and reduce the ability of developers to market their apps.
The next submission of this app may require a longer review time, and this app will not be eligible for an expedited review until this issue is resolved.
Next Steps
Review the Design section of the App Store Review Guidelines.
Ensure your app is compliant with all sections of the App Store Review Guidelines and the Terms & Conditions of the Apple Developer Program.
Once your app is fully compliant, resubmit your app for review.
Submitting apps designed to mislead or harm customers or evade the review process may result in the termination of your Apple Developer Program account. Review the Terms & Conditions of the Apple Developer Program to learn more about our policies regarding termination"
What should I do?
Actually I send my company Indian government registration documents like trademark certificate and other to apple team & in that mail i also written that this app content is not copied from any other apps.
So they accept my application 😊
And release app to apple App Store.
They don't mean that you have copied your own app.
They mean that your application is a very close replica in functionality or data or design to an existing application in the app store. Think of it as if I decided to upload a clone of WhatsApp to the app store. It would be misleading and create duplicates in the app store.
Apple take a strict stance on this and unless you add major changes in functionality and visuals to distinguish your app so that it stands as its own product it will not be allowed onto the App Store.

Is it possible to distribute an unfinished iOS app for closed-beta tests using Apple Store? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 5 years ago.
Improve this question
We'd like to do some closed-beta tests of our app using App Store.
We know about the ad-hoc way, but it needs testers' UDIDs to be gathered upfront and embedded in the provisioning profile, which isn't ideal, because we'd like to avoid asking 100 testers for their UDIDs.
Another way is to use the Enterprise Distribution which doesn't need gathering and storing UDIDs, but let's talk about another possibility...
The user needs to login when the app starts. User accounts can't be created from the app, so we're thinking about creating some beta-tester accounts on the server, submitting the beta-version of the app to Apple Store and sending the credentials to the beta-testers via email.
The only question is whether it's a recommended practice to submit an unfinished app to Apple Store. After submission all iOS users will be able to download the app, but only the beta-testers will be able to login. It has also an additional advantage, which is knowing Apple's feedback earlier, so any issues can be addressed earlier too. Do you think Apple will approve an unfinished app?
Also, is it possible to disable application reviews for an application submitted to Apple Store? We don't want to get bad reviews from users during beta-tests...
Thanks,
Michal
It is possible now to use TestFlight Beta Testing, with a current limit of 1,000 invites and without the need of asking and registering UDIDs.
Simple answer. No.
Detailed answer. No, Apple requires that applications in the app store be final products. You can attempt to slip it through so long as you don't call it a beta or make any reference to it not being completed. In doing this method you are skirting Apple's rules which could result in having your developer license revoked.
More information can be found HERE--> https://developer.apple.com/app-store/review/guidelines/ <--HERE
Edit to add: No you can't disable reviews in tha app store.
Beta test apps are explicitly prohibited by Apple's App store guidelines.
However if you don't explicitly label or advertise an app as Beta test, and the app appears fully functional and otherwise acceptable, then Apple might approve the submission.
It is actually quite common for developers to submit unfinished apps and put them in the App store (see the "minimum viable product" style of development). However the unfinished features have to not be apparent and not mentioned anywhere in the apps description or documentation, so that the app appears to be fully functional to the reviewers (e.g. if some feature is missing, then hide the button and documentation for it so that no one knows that something is missing). I've got an app in the App store that only has 5 or so of the many dozens of features on my original design spec. No one knows (until now :)
There is no way to limit app downloads to only specific testers (other than using Ad Hoc, Enterprise or B2B accounts) for closed testing, and there is no way to prevent bad reviews and ratings. You can limit app availability by country and by day, and submit no search keywords to limit exposure. You could try pricing your app too high and gifting the app to your testers if you are willing to give Apple 30% of the high price per copy.
I am 99% certain that Apple wouldn't allow that, mainly because you are stopping the majority of people from using the app. Also because you're submitting an unfinished app.
If I understand the Apple Developer guidelines correctly, you cannot distribute your beta app to any external entities (public customers, friends etc) other than using TestFlight's external testing suite. A lot of folks (and your question mentioned it) talk about AdHoc as a way around this. If you look at the Apple Developer website and try to add a device to your dev account, they pretty clearly give a warning (see image from SO question here) that states that Ad Hoc devices are only to be used for internal organizational use, or if you are a legal agent (i.e. consulting firm hired to create an app for a company) of that organization. Based on this I don't think AdHoc gets you off the hook from using TestFlight for external beta testing.

Distribuiting iOS app preview to non developer (e.g. musician, illustrator)

I would like to distribute an App preview to a musician that I am working with. He is not an employee of my company but offered me to do the game sountrack for free.
I have checked on the iOS Provisioning Portal and found the following dislcaimer:
"Important: Your iOS Developer Program membership can be terminated if you provide pre-release Apple Software to anyone other than employees, contractors, and members of your organization who are registered as Apple Developers and have a demonstrable need to know or use Apple Software in order to develop and test applications on your behalf. Unauthorized distribution of Apple Confidential Information (including pre-release Apple Software) is prohibited and may subject you to both civil and criminal liability."
According to this I can only distribuite preview apps to test developer that I somehow employ. This excludes the case of friends working for free on non coding matters (e.g. musician).
Does anyone of you had a similar concern?
Thank you very much!
EDIT2:
I posted again this question on new post with additional details as Apple replied to me on this matter and did provide a different answer than the ones below. I have tried to add comments to those answers but this question doesn't seem to have any more visibility and need to solve this quickly, so thought that that was the way to go.. let me know if this is not correct. Thanks!
That's for pre-release Apple Software such as the beta a new version of iOS. You can send your own app to your friend so that he can test it, but you can't give him access to pre-release Apple Software and other confidential information.
Here is a guide that shows how you can send the app to beta testers, and here is a web application that makes the process easier.
Also Apple's Tools Workflow Guide says:
it’s always a good idea to perform wider testing with a representative sample of your app’s potential users. Such testing may reveal issues that surface only with particular usage patterns. An app tester is a potential user of your app who is not part of your development team but is willing to test it before it’s released through the App Store.) Adding app testers to your group of testers exposes your app to a variety of usage styles. You can collect and analyze crash reports (also known as crash logs) from these testers to resolve execution problems.
Nope, I think you misunderstood. You can distribute your own app as an Ad-Hoc to your friends whoever is a developer or not. However, there's a 100 devices limitation. And Apple is encourage you to do so before submit your app to App Store.
You cannot test your app the same way the users of your app will use it. They have different data and different usage patterns. Before publishing your app on the App Store, put it through real-world testing to find and solve as many problems as possible.
You can refer to THIS DOC to find out how to publish your App for user testing.

Resources