Search Unity

Everyplay requests many permissions on Android OS6+

Discussion in 'Unity Everyplay' started by Deleted User, Dec 13, 2015.

  1. Deleted User

    Deleted User

    Guest

    Everyplay has added permissions to the startup sequence of my game on Android. These now ask the user during the game’s opening launch sequence which isn’t the greatest user flow.

    1) android.permission.READ_PHONE_STATE
    What is requiring this permission to be in the manifest file? Whilst it’s only read-only access to the phone’s state Google classify it as a dangerous permission and under OS6+ it now causes a warning to pop-up for the user that says:
    “Allow [Game Name] to make and manage phone calls”. Which obviously will cause a lot of users to be concerned. Are we able to remove this permission from our manifest file?

    2) android.permission.RECORD_AUDIO
    I assume this is for the Everyplay feature. It will now cause the popup - “Allow [Game Name] to record audio”. Are we able to not ask the user for this permission when the game is first run, and instead ask for it only when the user first presses on the Everyplay Video Share button?

    3) android.permission.CAMERA
    As above, can we delay asking the user for this until they press on the replay sharing button?

    4) android.permission.WRITE_EXTERNAL_STORAGE + android.permission.READ_EXTERNAL_STORAGE
    Both of these will give us the “Allow [Game Name] to acess photo, media and files on your device” popup. Do we need these permissions? I’m lead to believe that Starting in API level 19, this permission is not required to read/write files in application-specific directories returned by getExternalFilesDir(String) and getExternalCacheDir().
     
  2. Svirsky

    Svirsky

    Joined:
    Sep 16, 2015
    Posts:
    5
    We have the similar issues, please fix them as at this stage your plugin requires 4 permissions in a row upon app launch which is unacceptable especially as I am not sure all of them are needed:
    WRITE_EXTERNAL_STORAGE - not needed since API 19, as app storage can be accessed using context methods
    CAMERA - why is it required if there is no front camera recording functionality for Android?
     
  3. DanielLupascu

    DanielLupascu

    Joined:
    Oct 27, 2015
    Posts:
    5
    Hi. Do you have any update on this issue?
     
  4. Stevanus

    Stevanus

    Joined:
    Aug 13, 2014
    Posts:
    22
    I really like Everyplay, but the permissions requests are annoying.
     
  5. ullatussimo

    ullatussimo

    Unity Technologies

    Joined:
    Jun 16, 2015
    Posts:
    108
    Hello @MooseMouse @Svirsky @DanielLupascu @Stevanus,

    Thanks for reaching out!

    If you do not wish to use the FaceCam functionality, it should be safe for you to remove the following lines from the AndroidManifest shipped with Everyplay:
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-feature android:name="android.hardware.camera"android:required="false"/>
    <uses-feature android:name="android.hardware.camera.autofocus"android:required="false"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    However, removing these permissions will make it impossible to use the FaceCam functionality.

    The following line can be modified to request less permissios on Android versions that no longer need the permission:
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18"/>
    This last bit will be revised in a later SDK update.

    Changing how the rest of the permissions are requested will require a larger revision of the SDK.
    This is on our roadmap, but unfortunately we don't yet have an ETA for when it is done.
    This is due to some APIs being deprecated in Android M.

    Hope this helps!

    Cheers,
    Simo
     
    eirikwahlitema likes this.
  6. Stevanus

    Stevanus

    Joined:
    Aug 13, 2014
    Posts:
    22
    Thank you for the response. It helped a lot.
    I also want to mention that you need to add this permission manually on the Android Manifest:
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" />

    otherwise it will default to the read permissions without the maxSdkVersion.
     
  7. antti_partagames

    antti_partagames

    Joined:
    Nov 5, 2015
    Posts:
    18
    We're currently in an uncomfortable situation with the permissions that are asked at app start on Android 6.x devices. Is there really no way for us to give the player context on why the runtime permissions are asked? For example moving the runtime permissions away from the app start by initializing later or something like that?
     
  8. antti_partagames

    antti_partagames

    Joined:
    Nov 5, 2015
    Posts:
    18
    We disabled the camera permissions, everything seems to work fine after that, the facecam feature is understandably automatically disabled We also added the suggested android:maxSdkVersion="18" tag to the manifest and so far everything works and no annoying permissions are asked on Android 6.x devices.
     
  9. angralon

    angralon

    Joined:
    Feb 25, 2014
    Posts:
    9
    Are there any updates on this?

    As a user, i would never approve those permission during the first start of a game.

    Also, there should be a short explanation dialogue:

    "Do you like to add camera/microphone recordings to your Everyplay videos?"
    Yes -> Request Permission dialogue open
    No -> Facecam is disabled

    Like this, the user can associate the permission to Everyplay.
     
  10. i9mobile

    i9mobile

    Joined:
    Aug 8, 2013
    Posts:
    54
    Why the Everyplay SDK starts automatically? Can we start it manually so the permissions will be asked on the correct time.
     
  11. screenname_taken

    screenname_taken

    Joined:
    Apr 8, 2013
    Posts:
    663
    @ullatussimo Is there a way for the app to request the permissions once the user actually presses a button to enable Everyplay in the game's options?
    I can't stress enough how this is needed. There are a lot of paranoid android users, myself included.
    Almost anyone with an android phone that tested my game was asking me "why am i requesting permissions on load" and why so many.
    It's not something insignificant, especially when you may start getting bad reviews from people that were put off by Everyplay slapping you with 3 permissions right off the bat.
     
  12. MetaDOS

    MetaDOS

    Joined:
    Nov 10, 2013
    Posts:
    157
    I also need the solution for this. My game was nominated to bed featured globally and we need to solve this issue before being featured. Google Play doesn't want the app to request many permission at launch.
    Is it possible to request the permission at the first time we click to share the replay?
     
  13. screenname_taken

    screenname_taken

    Joined:
    Apr 8, 2013
    Posts:
    663
    @LeGiangAnh As far as i know, not yet. It's also something i want because it was requested almost unanimously by the beta testers. That they shouldn't see the permissions if they don't ask for the feature.
     
  14. ullatussimo

    ullatussimo

    Unity Technologies

    Joined:
    Jun 16, 2015
    Posts:
    108
    Hello @angralon, @i9mobile, @screenname_taken, @LeGiangAnh,

    Thanks for reaching out.

    As said before, unfortunately changing how the permission requests work requires a larger revision of our SDK.
    We are working on this matter, but unfortunately there is no ETA for this yet.

    For now, in order to remove the permissions requests generated by the Everyplay SDK, you can modify the AndroidManifest.xml supplied by us (found in Assets/Plugins/Android/everyplay/AndroidManifest.xml) like so:

    Please remove / comment out these lines:
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-feature android:name="android.hardware.camera"android:required="false"/>
    <uses-feature android:name="android.hardware.camera.autofocus"android:required="false"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>

    Please note that doing this prevents the Everyplay FaceCam functionality from being used.

    Please modify the line
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    so that it reads
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
    This last bit will be revised in a later SDK update.

    Hope this helps.

    Cheers,
    Simo
     
    eirikwahlitema likes this.
  15. screenname_taken

    screenname_taken

    Joined:
    Apr 8, 2013
    Posts:
    663
    @ullatussimo isn't everyplay facecam only supported on ios at the moment anyway?
    That's what it says on one of the introduction to everyplay sites i think.
     
  16. MetaDOS

    MetaDOS

    Joined:
    Nov 10, 2013
    Posts:
    157
    Even I disabled "Early Initializer", it still requested at launch. Then I followed @ullatussimo suggestion to temporary solve this.
     
  17. pmjo

    pmjo

    Unity Technologies

    Joined:
    Sep 17, 2013
    Posts:
    245
    Actually FaceCam for Android was released in v1.5 - Oct 2nd 2015 ;) So it seems the doc is not up to date..
     
  18. screenname_taken

    screenname_taken

    Joined:
    Apr 8, 2013
    Posts:
    663
    @pmjo OhOh! something i found out today. Everyplay kept crashing on my tablet, so i thought that it was just because it's an old Tegra3, even though i'm checking if recording is supported before doing anything.
    It didn't crash, rather it would lock the application except the audio if i would start everyplay.
    Today i found out that it was an overlay app that caused the issue, called Twilight. It slowly turns the screen red the later at night it is.
     
  19. pmjo

    pmjo

    Unity Technologies

    Joined:
    Sep 17, 2013
    Posts:
    245
    Interesting. Need to try that and Everyplay together.
     
  20. Allen0012

    Allen0012

    Joined:
    Sep 5, 2009
    Posts:
    93
    @ullatussimo this issue was brought up almost one year ago, and "working on it but no ETA" usually means some progress after one year. It would be great to know if there has been any progress on the v2.0?

    Is making the SDK open source an option here? So people can contribute to the project.

    I know I wouldn't press that accept button and would become suspicious if a game I just installed asked for Audio/Video recording permissions the second I installed it.

    I'm going to have to cut this feature from my game just because of that, and go to great lengths to offer and maintain a second version with the feature enabled.
     
  21. ullatussimo

    ullatussimo

    Unity Technologies

    Joined:
    Jun 16, 2015
    Posts:
    108
    Hello @Allen0012,

    Thanks for your message.

    Unfortunately we have had to postpone work on this matter since more critical issues have surfaced (for example, Android N compatibility).

    We are still working on improving how the permission requests work.
    We will be making our SDK work similarly to the iOS version regarding permissions (so the permissions are only requested when needed).

    However, due to how Unity handles permission requests on Android, using the new permission system will require you to export the game as Google Android project and modify the AndroidManifest.xml manually. We will provide further instructions on this when the relevant SDK update is out.
    In addition, if all of the other plugins that you use in your project do not support the "correct" way of asking permissions, you may run into crashes due to "missing permissions".

    Due to factors mentioned above, we're taking our time to polish and make sure that using the new permission system is as painless as possible.

    Hope this helps.

    Cheers,
    Simo
     
  22. LunarExGames

    LunarExGames

    Joined:
    Feb 18, 2015
    Posts:
    44
    Any updates on this? I've added Everyplay to my game and now it's asking for the "Manage phone calls" permissions which is a bit much for users who don't understand why.
     
  23. LunarExGames

    LunarExGames

    Joined:
    Feb 18, 2015
    Posts:
    44
    Tried this and it removed 1 out of the 4 permissions - but still asking for "Manage and make phone calls" which I'm not sure why this would be the case.
     
  24. screenname_taken

    screenname_taken

    Joined:
    Apr 8, 2013
    Posts:
    663
    I don't think that it is Everyplay. If i remember correctly it asks for camera, mic and photo gallery.
     
  25. LunarExGames

    LunarExGames

    Joined:
    Feb 18, 2015
    Posts:
    44
    Very strange - I have the Unity cloud build and installed that one - and it only asks for 2 permissions, camera and audio recording. When I compile on my computer, it adds 2 more permissions including the "Manage phone calls". Not sure how this is happening but at least the Unity Cloud seems to work better for my build in that sense. Will stick with the Unity Cloud version of the builds and as long as it keeps up only 2 permissions, this will work.
     
  26. screenname_taken

    screenname_taken

    Joined:
    Apr 8, 2013
    Posts:
    663
    It shouldn't though. Think you should file a bug report. A project should be the same no matter if you compile it to the cloud or on your pc as far as i know.
     
  27. User340

    User340

    Joined:
    Feb 28, 2007
    Posts:
    3,001
    I'm getting the phone call warning, what is up with that? Why does Everyplay need to make phone calls? I would never allow an app to make phone calls on my behalf.
     
  28. yasirkula

    yasirkula

    Joined:
    Aug 1, 2011
    Posts:
    2,879
  29. User340

    User340

    Joined:
    Feb 28, 2007
    Posts:
    3,001