change VPN configuration permission modal alert iOS - ios

I've created app that connects iPhone to VPN(IKEv2) server. When I'm trying to connect to VPN first time it requires user permission in modal alert. Is there any way to change text of this modal alert? Didn't find any code in swift doing so. Info.plist keys, also don't contain something to do it. Is it possible? Moreover, I'm getting my app rejected by Apple App Review, because I don't properly explain to user why my app asks permission (I have privacy policy and terms of use in app, also I explain data collection in my app's description.).
Apple Review team:
We noticed that your app requests the user’s consent to access their
VPN but does not clarify the use of this feature in the permission
modal alert.
Please see attached screenshot for details.
UPD:
I've got answer for my appeal and now waiting for call.
Answer:
Hello,
Thank you for your response. Your call with an Apple Representative is
confirmed.
An Apple Representative will call you on the number provided within
the next 3 to 5 business days from today to discuss your app.
Best regards,
App Store Review

Okay, I've got call from Apple and they said:
It is new requirement for VPN apps to explain how does they collect
user data in permission modal alert, but Swift wasn't updated to do
so. That is why you have to show information about data collection in
view where you will show prompt or show your custom modal alert.
I've added my own alert that forces user to agree with privacy policy and get approved.

I've added text like "By starting VPN you agree with Privacy policy(this is link)" and get approved.

Related

How to solve "Your app currently does not contain the "dismiss" button on your subscription page"

I have simple demo in app purchase demo published on playstore just to demostrate the implementation of in app purchase using Google play billing library, but i got an email that my subscription page violates the Subscriptions policy.
and the main message is Your app currently does not contain the "dismiss" button on your subscription page , i really don't know what they mean when my app appeares to be missing a dismiss button on the subscrtiption screen.
i tried asking the support team what the dismiss button must do or placed on the screen, they keep saying the same thing to go and read the subscription policy page, of which they are not saying anything about the dismiss button.
If anyone had solved this please help or guide me on what to do, i really wanna keep this app to play store for public testing and my audience to refer to it when they implement in app purchases.
I tried adding all the descriptive information about the subscriptions i offer in the app including the subscription period, charge and where to manage the subscritpion and contacted the google play review team to actually tell me what is needed but nothing helpful from their side.

App Store - App Privacy - Can't update app privacy questions as admin

Since yesterday, a new privacy policy is enforced when submitting your app for reviewing on the App Store through App Store Connect. Before yesterday, I was able to submit my app, but today, I get the following error:
Before you can submit this app for review, an Admin must provide information about the app’s privacy practices in the App Privacy section. Learn more.
When I go to General -> App Privacy, I get the following message:
[...] Account Holders and Admins are responsible for disclosing what data is collected from this app and how it may be used.
According to this guide (step 3), a 'get started' button should appear leading to a page where I should be able to answer privacy questions. However, this button does not appear. It seems that I am not able to answer these questions anywhere else, even though my role is admin. Does anybody else encounter the same issue? Am I overlooking something?
Note that I've been promoted to admin only minutes ago. It could be that my role is not yet propagated to the privacy section, but the rest of app connect does reflect my new role correctly, so it does not look like it's not propagated.
I just had to click "Publish" in the top right corner.
I thought this was to publish the app, but it was actually to publish the privacy policy that I'd already filled out. The other sections didn't have a special "Publish" button, so this was confusing.
I also faced this issue.
The solution is, we need to provide some information in App Privacy menu.
In the App Privacy section there is "Get Started" button that did't appear to me because I wasn't the holder or admin of that account.
Got it fixed by selecting App Information / Edit User Access, setting Full Access, and then I logged out and logged in again.
If you're use any ads in your app you must select that you collect data via your app in your App Privacy and then select which data you collect like user location. You may have also add other data if your app collect those data. Yesterday i upload an application and its live now.
First select Yes in App Privacy
Then add which data you collect
I'm also facing same issues. Finally resolved issue select Analytics and USER Tracking option. I think, Apple force to user to select Tracking user option in App Privacy. I'm not using anything tracking, AD BUT Apple forcefully allow to select USER Tracking option. I have registered appeal to Apple... :)
I just need to fill all the details in App Privacy section & hit publish button on right top corner. You can submit your builds after this step.
I fixed this by asking my Administrator to set my account as Admin role, then after few minutes (refresh page) the blue buttons appeared itself and I can complete the privacy questions. Please don't forget to click on "Publish" (on the top right corner) after you finish filling the form.
It appeared to be a propagation issue after all. Problem solved itself an hour later.
I also faced this issue..and solution is go to -> App Privacy -> Product page review and data Types and set according to your app uses or you can set Data is not collected from this app.
Don't forget to save changes pr proceed.enter image description here
Go to App Privacy and Click on Apply
On the Right Top Corner
Thanks

SKStoreReviewController not appearing in debug mode

So I have an app which is already on the app store and i’m now trying to implement the SKStoreReviewController.
I’ve added the logic for handling and showing the dialog via the request review method. But this dialog only appears 3 times on a fresh device and on other certain devices it’s not appearing at all.
It’s almost acting like the app is live on the app store. An addendum to this is once a user rates the app, will the popup dialog be shown again?
Although, it is not mentioned in documentation: No matter how many times you call the API, the system will only show up to a maximum of 3 prompts to the same user in a 365-day period. And it will be shown once for one version.
The alert is always shown in debug. Note, a user can disable rating alert at all going to Settings -> iTunes & App Store -> In-app ratings & review.
More information here.
Ensure that your device has an internet connection. For me it did not work when my device was in airplane mode.

Free iOS in app purchase for some users/devices

I would like to build a mechanism to free my in-app purchases for some of my VIP users devices. My idea is I pre-save the UDID of the user devices in my backend server. When the app starts, it will call my server and get the list of udid and check if the device is in VIP list. if yes, directly show full features without any button to ask for in-app purchase.
However, UDID cannot be used anymore. What should I do in this case? I dont want to ask user to enter some codes. because it would disturb my user interface.
new updates of the question:
The purpose is that , I got a list of people that they will review my apps , but i dont want to have any pop up to ask for promo code or any specific UI for these people. So my idea is I ask them to give me their UDID (or whatever number that they can identify themselves for their phone), and I save them in my backend. When they download the app, the app call the backend and compare their identifier number/UDID, see if they are my VIP, and give them full features automatically without asking promo code and any UI specific for these user.
I would like to identify the user only. Do you guys have any solutions?
thanks
You could do something like provide a URL to the users which opens the app and gives the app some parameter(s). When the app receives these details it could show an alert to ask for a name or some other info (like an e-mail address) from the user. Then you can send the details to your server for verification and set some value in the app to enable the features. In this way the UI of the app is not changed.
I think it's not conform with the iOS/App Store TOS (to be clear).
The easy way is to use the UDID but we can't now... You can get another unique "number" for identifying the device like the Mac Address (you can get in in Objective-C, not really simple but you can).
You can add a button which asks for a promo code (maybe the same button to buy the in-app upgrade). Only those who have a promo code can get the upgrade for free.
Also, should it be "VIP users" rather than "VIP user devices"?

How to exit an IOS application when License Agreement is not accepted by user?

I am aware apple won't support exiting an application programmatically, But I want to exit my application if the user not agreed to the license agreement? Is it possible to restrict the application loading if declined? or What can I do in this case?
Do not crash or force close or find ways to close your application. If user's doesn't accept the agreement then they might not be interested in using your application eventually they will delete it. BUT, do as the protocols say, Display an agreement alert (if you already have an EULA) then point towards the same and ask user that they will have to accept the agreement in order to use the application.
Other ways could be, give a preview of some of the screens (for those who doesn't accept the EULA), if they like your screens then ask for agreement acceptance.
Hope it helps.
I would suggest you just keep re-showing the license agreement. If they pick "No", have a popup saying "You must accept the agreement to use this application", and when they tap "OK" re-direct them to the agreement confirmation again.
You can show a separate view apologizing that without the user giving consent, they will not be able to use your app. That's another opportunity to have them change their mind, by the way.
In one of my app what i did was i have shown the agreement to the user and have asked him to accept or decline it.
If the user declines the agreement then i have shown a pop up informing the user that he cannot proceed further in the app if he declines the agreement and i have kept him on the agreement screen only.
Manually if you exit the application then your app will be rejected by apple because apple does not want an app to function in that manner.
Hope this helps...
I suppose NSAssert(NO, #"The user failed to accept the EULA"); would work, perhaps within a delegate callback after presenting an alert view indicating that the application will now exit due to their declining to accept the terms. Then you could easily track the assertion failure in crash reports to determine how many people were rejecting the EULA.
I couldn't say if this will make it past app store review though.
Apple does not recommend using exit(0), but I believe it should be OK in your case, since the app should not work if the user did not accept the license agreement
But using it to exit a regular app operation is discouraged.
[[UIApplication sharedApplication]performSelector:#selector(suspend)];
But exiting app like this is not a good practice.
You can display a notice to the user, and then launch them to your website or facebook page. This will provide a break in flow as opposed to a dialog that will just appear and disappear until the user feels coerced into clicking "I Agree".
You can also set UIApplicationExitsOnSuspend to YES in your plist which will terminate the app one it goes into the background. Then you will get a full relaunch when the user comes back into the app from your website. Information on how to do this is here: UIApplicationExitsOnSuspend anything else I'm missing?

Resources