ALAssetsLibrary ask user for permission when saving to an album? Why? - ios

I have a game where users can take a screen shot and it will save it to a custom album named after the game. When I try and do this, iOS asks the user if the App can have access to their location information, if they say no, then the screen shot is not saved in the custom album, but rather the default album.
Why is it asking permission to use location information? I'm just taking a screen shot. It has nothing to do with the camera. I'm just copying the opengl surface and making a UIImage out of it.
This is how I'm saving the UIImage:
- (void)writeImageToSavedPhotosAlbum:(CGImageRef)imageRef orientation:(ALAssetOrientation)orientation completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock;
Is location information being put into the screen shot? If so, can I disable that so this warning doesn't come up? My game has no need for location information and I'd hate for users to think I'm tracking them.
This seems like a crazy warning since it's completely factually wrong.

As shown in the following link,
http://developer.apple.com/library/ios/#Documentation/AssetsLibrary/Reference/ALAssetsLibrary_Class/Reference/Reference.html
This method will fail with error
ALAssetsLibraryAccessGloballyDeniedError if the user has not enabled
Location Services (in Settings > General).
However, we have found that there is not location permission request in iOS 6. Maybe iOS 6 has other privacy control on Photos. So you don't need to asking location permission. Our solution is check the [[UIDevice currentDevice]systemVersion] and only save to custom album while iOS >= 6.

Related

Using ARKIT Image recognise app publish issue on app store

I have uploaded My App to Appstore but they rejected with this reason (AR Camera View Image Detection).
Application Functionality
- detect image and play video
- image are store in AR Resource asset
From Apple
- we were still unable to locate a method of obtaining the AR markers in your app.
so can you help me for that and what is the AR Marker?.
Apple is very strict with regard to apps that use marker recognition, because Apple wants to make sure the end user has an optimal experience. If AR experience requires a marker image, it is important to inform the user how to and from where to obtain the marker image.
There are two main things to to do:
It's important to include the marker image when submitting your app
to the store.
Within your app's UI you have to inform the user what
marker image to use and how to obtain the marker.
Please note: From my experience Apple will also reject apps that force the user to purchase a physical product in order to unlock content. Any paywall/purchase requirement would have to be through an in-app purchase
There is two type marker and markless . markless mean some animation image will show the camera . marker means if you target something means you will show the marker image inside the target image .

Detect screenshots taken ON ANY APP within my iOS app

Is it possible to detect when the user takes a screenshot in any app while my app is in the background ? And how would I do that ?
If not, can I background check regularly for screenshots (not pictures from the camera) in the photo library ? Like every minute or hour ?
One way to get your app to detect Screenshots is:
Register with the Photo Library's PHPhotoLibraryChangeObserver
When your app receives a notification that a photo has been added,
check its PHAssetMediaSubtype
If the Subtype is PHAssetMediaSubtypePhotoScreenshot, you know a new
Screenshot has been taken.
The PHPhotoLibraryChangeObserver protocol notifies you of changes that
occur in the Photos library, regardless of whether those changes are
made by your app, by a user in the Photos app, or by another app that
uses the Photos framework.
https://developer.apple.com/reference/photos/phphotolibrarychangeobserver

Can custom keyboard access user photos?

I'm looking to make a custom keyboard for iOS that accesses a user's camera roll. Is this possible? I've done a bit of research but it doesn't seem like a custom keyboard extension can access the camera roll.
A custom keyboard extension can access the camera roll, provided the user has already given full access; all the same code that works in a normal app should work in a keyboard extension as well. Per the documentation:
If you request open access by setting this key’s value to YES, your keyboard gains the following capabilities, each with a concomitant responsibility in terms of user trust:
Access to Location Services, the Address Book database, and the Camera Roll, each requiring user permission on first access
I believe that Riffsy has a feature where you can save to and recover GIFs from the camera roll.

Limiting the user from saving the screen

I am making an app that allows the user to add captions to their photos. I'd like to be able to allow the user to save / share 3 of their creations, and after they share for the third time, shut down the app until they purchase more credits.
I'm trying to think of ways that the user can get around this to use my app for free all the time. The only way I can think that the user can save a photo manually is to do a screen shot, which I know how to detect so I'm not worried about. Is there anything else I'm not thinking of?
You can do it in an indirect way like the Snapchat app. Taking a screenshot interrupts any screen touches. See this for the solution.
You can trap the screen shot event and if they do create a screen shot you can delete it.
You can display some watermarks .
Remove watermark only after they buy it.
Here is a stackoverflow link to add watermarks

iPhone/iPad wallpaper image monotouch

is there a way to setup an image as a device wallpaper? Originally I want to download an image, save it somewhere in a picture roll and set it up as a wallpaper programmatically.
google doesn't give me any answer on how could it be done.
Unfortunately this API is not exposed to developers. There is also no URL scheme exposed for developers to launch the Photos app.
You're only option is to display a prompt that tells the user to manually go to the Photos application to set their wallpaper, and indicate how they would set the wallpaper there.

Resources