On the submission properties tab on my UWP application, I cannot select "No" for the "Does this product access, collect, or transmit personal information (data that could be used to identify a person)?" question.
It is saying "Based on the capabilities your submission declares, a privacy policy URL is required."
I have reviewed my capabilities (which is empty), and I am not using any personal information on my application.
If the internetCapability is enabled, you will be required to provide a privacy policy, as your app could theoretically send any personal data over the internet.
You can easily generate a privacy policy with a tool like this.
Although #Martin's response is technically correct, it's incomplete.
Because you are submitting a Desktop Bridge app (with runFullTrust capability) your app has access to essentially everything the user has access to, and thus internetClient is redundant (unless you also have UWP components like a background task). According to the Store product page, your app has access to "all system resources" so in your privacy policy you might want to mention more than just network usage - you could mention that you don't collect or use any personal data, won't read files or access the microphone or the camera or location etc. I don't believe that's required, but it might make customers feel better.
(Note that the Store text might change to something more descriptive in the future).
Related
I recently asked this question and user's #DalmTo and #Sergio NH they gave me an exhaustive answer for which I thank them very much.
Moving forward to question, we started publishing the application, and its verification was not required, since no scope was added (here it is a little unclear why the requests worked in an application with a test mode in which these scope were not added (google drive, google sheet and google ads)).
However, this time the application in the "In Production" mode began to give us an "Unverified app screen" (see Unverified app screen). We decided that we still need to add scope to the list, and, of course, that the scope list (their list is described above) requires verification by Google.
We started filling in the necessary fields, while studying the Google documentation at the same time, and came across the following information (see block Verification process -> What are the requirements for verification?):
Apps not applicable for verification
Apps for internal use only
(single domain use) Apps for personal use only Apps that are Gmail
SMTP plugins for WordPress Apps that are in development or
staging/testing
Apps for personal use only
And this is just our case: we have already received permission from Google Ads and are just generating simple reports that we want to integrate with Google Sheet. I.e., this is an elementary script that works within this account (however, we still need to request the first concert screen, even for this developer account) and cannot be distributed to any other accounts.
But when adding our scope, Google requires us to pass verification, forcing us to fill in the required fields, in the form of domains and their verification via the Search Console (we have already done this and this stage does not cause difficulties) and links to Youtube videos - where we must show how scope is used.
And just this stage is not clear. We do not allow other people's accounts to connect to this application, and the software does not have any interface, it is just a script that receives data from Google Ads and saves it to Google Sheet (creating a file via Google Drive). We have described all this in the scope usage description field. But the link to the Youtube video is require field, and we sincerely do not understand why (considering our case) we should record something, and most importantly, what exactly we should record in this case. If the documentation itself says that in our case we do not even need a verification.
Maybe we did not understand something and now we are doing it wrong? We will be glad to receive any tips from experts working with Google Cloud Console and apologize in advance for broken English.
We also apologize in advance to the StackOverflow community that we have to publish such elementary (which we are absolutely sure of from our side) questions here. We come here from Google Cloud Console - > Support - > Community support, and we must first try to publish posts in the Google Groups specified there, but they simply do not answer us, apparently considering our questions too elementary and not worthy of attention (however, these same questions in Google Groups are moderated) (for example, the previous question). And we are no longer able to contact any other support. Once again, we apologize for having to ask about this here.
It is true that if your app is a single use app then you do not need to be verified.
However if you don't get your app verified then there will be some restrictions.
you will see the unverified app screen
your refresh tokens will probably only be good for two weeks.
In the case of the YouTube api uploaded videos will be suck private.
If you can live with those points then you don't need to verify your app and you can continue as is.
If on the other hand you don't want to see the unverified app screen and you want a refresh token that will last longer then two weeks. You will need to verify your app. Yes, Even if your app is a console application running as a job some where you still show the consent screen. This is the YouTube video you will need to show Google. Show the consent screen popping up show the URL bar and then show your script running. You also need to set up the homepage and privacy policy screens. Yes i 100% agree with you that this is silly.
When you go though the process. Explain to google that this is a single use script running as a job some where.
Unfortunately when Google changed it so that Refresh tokens expire for unverified apps they pretty much tied the hands of all developers who are running such single user scripts. We now have to get our apps verified if we don't want to have to request a new refresh token every two weeks.
If your program needs to access the requested scopes of the Google account privacy, even though the user is yourself, you also need to provide a youtube video to demonstrate how you use this program. The auditor cannot guarantee whether you will make this program public.
I am working on an embedded system that should support SNMPv3, and I am wondering how to let the user add new USM?
Is it reasonable to let the user add it by SNMP? by HTTPS?
Thanks
Avner
Depends on where you are aiming at with your product:
There are users out there that will only expect to receive some traps from your SNMPv3 device - Those users might not necessarily have access to tooling allowing them to add users via SNMP (or don't want to be bothered with having to install and operate free tooling).
Whether it makes sense to implement a user administration frontpage using HTTPS strongly depends on the amount of muscle your platform has. To me, that sounds a bit heavy-weight.
Most SNMPv3 devices I have come across so far had a simple ssh command-line-based interface for user management, so I would expect that is common practice in the market. Remember, adding users is a one-time activity in most environments.
What you should and must allow in any case is changing users' encryption and authentication keys using the USM MIB - The whole SNMPv3 security concept will cease to be of any value when keys cannot be frequently (ideally, in an automated way) changed.
My app needs the 'always' location permission. Apple complicated location permission options if apps ask for 'always' directly, so I started asking for 'while using' and then 'always'. This gives the user a first dialog, for 'while using', with buttons of 'Don't Allow' and 'Allow', which is great. However, I'd like the next dialog to have these same buttons (assuming they allow 'while using'), and I was getting this before my upgrade to iOS 11 Beta 5 (I'm not sure - I might have skipped a couple betas).
With iOS 11 Beta 5, I see complicated button text (like 'While using the app' and 'Always' instead of 'Don't Allow'/'Allow') EVEN IF the 'while using' permission is already granted.
I want to give users the simpler options. I think users read these permission dialogs about as often as they read EULAs, and that if it's not a simple allow/don't allow, most will just pick a random option instead of reading, and my app won't have the permission it needs.
Is this possible with the latest iOS 11 Beta? And will it be possible in the final iOS 11? I thought this was what Apple was suggesting - here's some advice (from https://m.rover.io/wwdc-2017-update-significant-updates-to-location-permissions-coming-with-ios-11-41f96001f87f):
For those seeking always permission levels, Apple is now recommending a new permission flow which is essentially a two-phased approach. The first phase or initial onboarding, should only ask for ‘when in use’ permissions...
The dialog stays the same for iOS 11.
With requestWhenInUseAuthorization() iOS will present these options:
If the user allowed location access while in use and you later ask to always access location with requestAlwaysAuthorization(), iOS will present these options. You are already getting the benefit here that Don't Allow Any Access is not offered:
If you ask for requestAlwaysAuthorization() right away before asking for requestWhenInUseAuthorization(), iOS will present these options:
So solve your problem, it is advisable to not just request the iOS dialogs but prepare the user with your own pre-dialog. Only request the iOS dialogs when you are sure that the user will accept. This will lower the chances that a user denies access this time, but maybe would have allowed access in other circumstances. Once the user denies, you cannot request the iOS dialogs anymore.
On a general note:
I think users read these permission dialogs about as often as they
read EULAs
Frankly said, that should not be the fundamental assumption on which we develop app workflows and govern user privacy.
Tech companies and the public discourse are increasingly focusing on user privacy. Giving choices is clearly not enough, part of the job is educating users that granting their location 24/7 to some possibly unknown hobby developer or a company in a country with unknown data protection laws is not the same as clicking Yes on an EULA. Also legal changes require that sharing of such sensitive information as your live location cannot be hidden somewhere in an EULA but must be explicitly opted-in by the user.
Thankfully the efforts of companies like Apple ensure responsible access to user data for developers to build great features. This can only be done by giving the choice to the users through conspicuous prompts like the one you are referring to. Because the alternative could be no data sharing or higher hurdles by law.
Update March 2018
To emphasize on the point made above: The recent lack of trust in tech regarding data privacy (Facebook & Cambridge Analytica) confirmed how important is it to understand the responsibility that comes with personal data. The result will be more external regulation - and rightly so. The conclusion for designing data access permission workflows can only be to inform and educate users and to transparently disclose what data is used for what purpose and give an easy to access option to un-share / delete data.
Update May 2018
With the European Union's General Data Protection Regulation (GDPR) coming into effect, it also became mandatory that you need to communicate information about how you process personal data in a way that’s concise, transparent, intelligible, easily accessible and in clear and plain language.
When installing the latest intellij, I was reading the privacy policy and came across this:
We use third party service providers as discussed in this section. We also use third party service providers in other circumstances; a complete list of the reasons in which we use third party service providers can be found here.
The word "here" links to this page, which as of this writing contains only a list of links to other privacy policies, and NO information about how these 3rd parties are used or what data is shared with them (despite the text in the policy itself claiming the page contains this information).
Does anyone know HOW and WHEN the following services (copied from the above wiki page in case it changes) are used by Intellij?
Survey Gizmo
Statwing
QuickTap Survey
Facebook
Google
Microsoft
LinkedIn
Yandex
Twitter
Adyen
Crazy Egg
The survey ones are fairly obvious what's probably going on, but what data, is shared and under what circumstances with some of the others could be important. In some cases folks might be working on projects meant to be kept secret, or might have personal or ethical reasons to avoid having a presence on some of those services. Without knowledge of which features send data to these providers, and what data is sent it's hard to agree to the policy.
One might also argue that the failure to specify as claimed in the policy means they don't get to send any data, but nobody wants to bother with that legal mess... particularly since they could change their wiki after the fact, and then one has to prove what it said at the time etc. The alternate argument is that the lack of specification implies they might share any and all data...
Does anyone know of better information about how Intellij uses these providers? Googling just got me lots of links on how to install Facebook SDK etc...
The privacy policy page shows links to the privacy policies of services used by the JetBrains Web site, marketing activities etc. As of version 2016.2 and all earlier versions, IntelliJ IDEA does not connect to any of those services, or send any data to them, from the product itself. I (a member of the JetBrains management team) am also not aware of any plans to start doing so in the future.
(Note that third-party plugins not developed by JetBrains do sometimes use those services.)
None of our downloadable IDE's or tools send back any sort of confidential information at all. The only information that is sent is anonymous usage data and ONLY with the consent of the user. Even accepting the Privacy Policy does not imply you have to send back data. It's completely opt-in.
Beyond that, the only other information sent is performance data, exceptions and other information which again requires explicit user action and consent.
The Privacy Policy covers every software and service we provide at JetBrains, including but not limited to our installable tools, services, our web sites, surveys we may run etc. The services you mention are all related to our web site, e-shop, social media promotions, any advertising campaign and/or any surveys we may run. Our tools do not use any of those services.
Concurring with my colleague Dmitri, we do not however control what individual plugins may or may not do.
We do appreciate your feedback however and we will take steps to make it clearer on the page.
I want to send email through gmail or other message clients,is it possible in iOS.
I searched a lot but didn't find anything.
I don't want to use the default composer to send mail.I wants user to choose whether they want to send emails from the default mfmailcomposeviewcontroll or can send through gmail,yahoo.
There are a few ways in which 3rd-party developers may offer this functionality -- regardless of the manner selected, it is up to the 3rd-party vendor to decide how much (if any) of these methods are implemented and documented in the public domain as accessible to other applications or users. Ultimately you will need to consult the target product's documentation or support channels to determine if such mechanisms exist. While this is neither an exhaustive list, nor it is a list of formally supported mechanisms for achieving your goal, it should give you some insight into what to go research or ask additional questions about:
Option 1: Open URL Schemes
iOS Developers can register their applications to respond to a URL scheme like "tel://" or "sms://" or "http://". If vendors register a URL scheme it will be visible in the app's info.plist. While it won't speak to the format of any parameters you need to pass, the vendor's documentation or support personnel may be able to shine a light on those capabilities. For the HTTP scheme, iOS' MobileSafari.app is registered to respond -- the well-formed NSURL that gets passed to Safari is used as the URL to which Safari navigates when launched.
Option 2: 3rd-party SDK
Other vendors may elect to make an SDK available that you can implement in your app. Google Drive, Dropbox, and Facebook are all great examples. To incorporate these cloud filesystems or social capabilities in your own apps, you can register as a developer and follow install guides to both adopt their SDK and leverage the functionality the SDK provides.
As for your specific question, it appears as though Google's official Gmail app does have an undocumented URL Scheme that the community has discovered, reverse-engineered, and written up. While I VERY STRONGLY DISCOURAGE use of undocumented app capabilities there is nothing preventing you from using this functionality. Keep in mind that because this is undocumented, there is a distinct possibility that the feature could be removed, changed, or otherwise made unavailable in future builds that can leave your own app in a bit of a bind. Furthermore, for those of your users that do not have the Gmail app installed would not be able to leverage this URL Scheme and could lead to a poor user experience. All that said, with the caveats above, Tom Scotland has written up a series of blog posts on the Gmail app's URL scheme and updates to the scheme as a function of the rest of the Google constellation of iOS apps - http://tom.scogland.com/blog/2013/01/29/gmail-url-scheme/
Yahoo Mail is a separate issue -- As far as I can tell, this app offers neither of these access options, however I'll leave the digging as an exercise for the OP.
Again, I encourage you to use MFMailComposerViewController instead of unofficial or unapproved app capabilities so as to limit your own app's exposure to changes beyond your control.