iOS 10 and xCode 8

It shouldn’t prompt for the permissions until you access something that requires the permissions. The rejection is an auto-scan by Apple looking for the libraries. Put in a reasonable usage string that you would want to show to your users if you ever did use the features, you would have nice prompts.

Rob

This workaround should be temporary until you remove unnecessary requirements from the core. In google already today the user is aware of all permissions even if they are not used. some of them are quite questionable such as asking for MMS which we could not find its source. Apple may choose to show the user the app permissions prior to install as well which will degrade our app conversion even further.

Definitely Corona SDK should not request the access to the unused APIs.

“Just add a description” is not a solution, it’s a hack/workaround.

There are no reasons to request camera/photos access for ALL apps, while Corona SDK is targeted to games development. Very few games need an access to camera/photos!

@Rob Miracle

Also getting:

"This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data."

As recommended earlier, I’ll put the following changes in my build.settings

NSCalendarsUsageDescription = "Not used within app", NSPhotoLibraryUsageDescription = "Used within app", NSCameraUsageDescription = "Not used within app",

I have one question though… in our app, I allow the user to perform a screen capture with display.captureScreen( true ). This means that I need to include a value for the NSPhotoLibraryUsageDescription, correct? Does the value need to be something specific or can it be like in my example above (ie. “Used within app”)?

Could anyone answer my question? Trying to get a release out here.

Thank you!

To my knowledge, the point of providing that string, is to display to iTC and the end user of the app, what exactly the app is doing with each of those libraries. Because Corona’s core includes all of those libraries, regardless of whether those APIs are actually being utilized. Therefore, including a short descriptive string is necessary. Stating that you are utilizing those APIs should be enough, but if you can include 7-10 words that identifies your indent, that would be ideal.

Supporting info:

From the docs:

 

  1. Important: To protect user privacy, an iOS app linked on or after iOS 10.0, and which accesses the user’s photo library,  
  2. must statically declare the intent to do so. Include the NSPhotoLibraryUsageDescription key in your app’s Info.plist  
  3. file and provide a purpose string for this key. If your app attempts to access the user’s photo library without a  
  4. corresponding purpose string, your app exits. 

I still have this problem: using xcode 8… Corona **55

Please someone advice, many thanks…

While processing your iOS app, XXXXXXXX 1.1(2016.9.231344), errors occurred in the app thinning process, and your app couldn’t be thinned. If your app contains bitcode, bitcode processing may have failed. Because of these errors, this build of your app will not be able to be submitted for review or placed on the App Store. For information that may help resolve this issue, see Tech Note 2432.

You masked out the whole build number. I’m going to assume you meant 2955 (since you’re using Xcode 8). If you by chance are using 2855  you will need to update to 2949 or later.

Since this isn’t impacting the general public any more like it was a week or so ago, we need to see what’s different about your app. Can you post your build.settings please?

Thanks

Rob

Hi Rob,

Thanks for your reply, below is the build.seetings, what is strange is that I manage to upload with no errors a version with 2949, and now it does not work again. Also tried with version 2955 and still the same error…

Thanks in advance, we are running a App for Mercedes, and the customer is waiting…

Rgds

Rui

– Supported values for orientation:

– portrait, portraitUpsideDown, landscapeLeft, landscapeRight

settings=

    excludeFiles =

    {

        – Exclude all Android icon files and .ogg files in the “music” directory:

        iphone = { “Icon-*dpi.png” },

        – Exclude iOS “retina” image files and .m4a files in the “music” directory:

        android = { “Icon.png”, “*@2x.png”, “*@3x.png” } 

    },

    plugins=

    {   

        [‘plugin.toast’] = {publisherId = ‘com.spiralcodestudio’},

        [“plugin.utf8”] =

            {

                publisherId = “com.coronalabs”

            },

        [“plugin.zip”] =

            {

            publisherId = “com.coronalabs”

            },

        [“plugin.facebook.v4”] =

            {

            publisherId = “com.coronalabs”,

            },

        [“plugin.openssl”] =

           {

           publisherId = “com.coronalabs”, 

           },

        [“plugin.OneSignal”] =

           {

           publisherId = “com.onesignal”,

           },

        [“plugin.google.play.services”] =

            {

            publisherId = “com.coronalabs”,

            supportedPlatforms = { android=true, [“android-kindle”]=true },

            },

    },

    android={

        largeHeap=true,

        versionCode=“101”,

        facebookAppId = “615366442004828”,

        permissions =

        {

            { name = “.permission.C2D_MESSAGE”, protectionLevel = “signature” },

        },

        usesPermissions =

        {

            “android.permission.INTERNET”,

            “android.permission.WRITE_EXTERNAL_STORAGE”,

            “android.permission.GET_ACCOUNTS”,

            “android.permission.RECEIVE_BOOT_COMPLETED”,

            “com.google.android.c2dm.permission.RECEIVE”,

            “.permission.C2D_MESSAGE”,

        },

    },

    iphone={

        plist={

            UIAppFonts =

            {

            “Ubuntu-C.ttf”,

            “Ubuntu-R.ttf”,

            “Ubuntu-RI.ttf”,

            “Ubuntu-B.ttf”,

            “Ubuntu-BI.ttf”,

            “Ubuntu-LI.ttf”,

            “Ubuntu-L.ttf”,

            },

            NSCalendarsUsageDescription = “Not used within app”,

            NSPhotoLibraryUsageDescription = “Avatar Photo Access”,

            NSCameraUsageDescription = “Not used within app”,

            UIBackgroundModes = {“remote-notification”},

            UIPrerenderedIcon=true,

            UIStatusBarHidden=true,

            CFBundleIdentifier=“app.enneaplay.sulamerica”,

            CFBundleDisplayName=“SulAmérica”,

            CFBundleIconFiles={

                “Icon@2x.png”,

                “Icon-Small-40.png”,

                “Icon-Small-40@2x.png”,

                “Icon-Small-40@3x.png”,

                “Icon-60.png”,

                “Icon-60@2x.png”,

                “Icon-60@3x.png”,

                “Icon-72.png”,

                “Icon-72@2x.png”,

                “Icon-76.png”,

                “Icon-76@2x.png”,

                “Icon-Small-50.png”,

                “Icon-Small-50@2x.png”,

                “Icon-Small.png”,

                “Icon-Small@2x.png”,

                “Icon-Small@3x.png”,

                “Icon.png”,

            },

            NSAppTransportSecurity = 

            {   

                NSExceptionDomains = 

                {

                    [“fbcdn.net”] = 

                    {

                        NSIncludesSubdomains = true,

                        NSExceptionRequiresForwardSecrecy = false,

                    },

                    [“facebook.com”] = 

                    {

                        NSIncludesSubdomains = true,

                        NSExceptionRequiresForwardSecrecy = false,

                    },

                    [“akamaihd.net”] = 

                    {

                        NSIncludesSubdomains = true,

                        NSExceptionRequiresForwardSecrecy = false,

                    },

                    [“amazonaws.com”] = 

                    {

                        NSIncludesSubdomains = true,

                        NSExceptionRequiresForwardSecrecy = false,

                    },

                },

            },

            – Whitelist Facebook Apps

            LSApplicationQueriesSchemes = 

            {

                “fb”,

                “fbapi20130214”,

                “fbapi20130410”,

                “fbapi20140410”,

                “fbapi20140116”,

                “fbapi20150313”,

                “fbapi20150629”,

                “fbauth”,

                “fbauth2”,

                “fb-messenger-api20140430”,

            },

            UIApplicationExitsOnSuspend=false,

            FacebookAppID=“615366442004828”,

            CFBundleURLTypes={

                {

                    CFBundleURLSchemes=

                    {

                        “fb615366442004828”,

                    }

                }

            }

        }

    },

    orientation={

        default=“landscapeRight”,

        supported={

            “landscapeRight”,

            “landscapeLeft”

        },

        

    }, 

}

I got the same E-mail but only the NSPhotoLibrary & NSCamera were mentioned and I’m not using any of them in my app, and I have  the latest build (2955). Did anyone manage to solve this ?!

Add this to your build.settings in the appropriate place:

iphone = { plist = { NSCalendarsUsageDescription = "Not used in this app", NSPhotoLibraryUsageDescription = "Not used in this app", NSCameraUsageDescription = "Not used in this app" } }

to work around this.

Rob

I only added the Photo & Camera lines and it was successfully processed. 
Thank you. 

@Alex@Panc

Thanks! Hope all is well :slight_smile:

Ok so I tried adding this to my build.settings:

iphone = { plist = { NSCalendarsUsageDescription = "Testing", NSPhotoLibraryUsageDescription = "Testing", NSCameraUsageDescription = "Testing" } }

After I resubmitted the build it seemed to resolve the issue stated in the first email.  However now I am getting the app thinning error.  So unfortunately at this time upgrading to xCode 8 and iOS 10 isn’t resolving the original issue.

Yea, the new pList entries is apparently tested before the app thinning tests happen.

Rob

Will there be a list compiled showing which plugins trigger each of these plist warnings?  As stated in the first post my app doesn’t explicitly use any of those 3 libraries.  I’m assuming those are arising from plugins

Are you using the AddressBook plugin?

No

I have same problem.

My app not using the photoLib or camera.

But…

This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

Xcode 8, iOS 10.

Plugins:

plugins = { ["plugin.notifications"] = { publisherId = "com.coronalabs" }, ["plugin.utf8"] = { publisherId = "com.coronalabs" }, ["CoronaProvider.analytics.flurry"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true, android=true } }, ["plugin.google.iap.v3"] = { publisherId = "com.coronalabs", supportedPlatforms = { android=true } }, },

What’s wrong?

I’m also getting these issues. Not using the camera, photolibrary etc…

On latest daily build.

Thanks! :slight_smile: