I am working on an Iphone app and I can enumerate assets using the Assetslibrary and load them into a table view. The user can delete a row (a picture / video) in the app but how do I UPDATE the Iphone photo album directly from my app? Otherwise on refreshing, the tableview will reload the previously deleted asset.
Sharing photos on iOS But in some cases, you want to remove this location data. Select one or more photos, then tap the share button (that's the little square with the arrow pointing up). At the top of the screen, tap Options. On the next screen, you'll see a number of options, including Location; toggle this off.
When you delete a photo or video from the Photos app on your iPhone, iPad, iPod touch, or Mac, it also deletes from your iCloud Photos and any other devices where you're signed in to iCloud Photos. It also no longer counts towards your iCloud storage.
As Ted said, this is now possible in iOS 8 using the Photos service. It's pretty clean actually. You need to submit a change request to the photolibrary. Here's an example.
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
[PHAssetChangeRequest deleteAssets:arrayOfPHAssets];
} completionHandler:^(BOOL success, NSError *error) {
NSLog(@"Finished deleting asset. %@", (success ? @"Success." : error));
}];
Make sure you've imported Photos, and gotten authorization from the user. (Which you probably did to show the image already)
PHAssetchangeRequest - deleteAssets https://developer.apple.com/documentation/photos/phassetchangerequest/1624062-deleteassets PHPhotoLibrary Class - authorizationStatus https://developer.apple.com/documentation/photos/phphotolibrary/1620745-authorizationstatus
Adding an answer to an old question here, because we are often asked for Screenshot prevention as part of a Data-Loss-Prevention (DLP) solution. You can (a) register for screenshot notifications and (b) ask the user to delete when it occurs, but there's no way to do it silently or secretly. Here's a full working code example:
func applicationDidBecomeActive(application: UIApplication) {
registerForScreenShotNotifications()
}
func registerForScreenShotNotifications() {
NSNotificationCenter.defaultCenter().addObserverForName(UIApplicationUserDidTakeScreenshotNotification, object: nil, queue: NSOperationQueue.mainQueue()) { (notification) in
print("Yep they took a screenshot \(notification)")
let assetToDelete = self.getLastImage()
if let assetToDelete = assetToDelete
{
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
PHAssetChangeRequest.deleteAssets([assetToDelete])
}, completionHandler: { (success, error) in
print("Success \(success) - Error \(error)")
})
}
}
}
// NOTE : You should ask for permission to access photos before this
func getLastImage() -> PHAsset? {
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [ NSSortDescriptor(key: "creationDate", ascending: true) ]
let fetchResult = PHAsset.fetchAssetsWithMediaType(.Image, options: fetchOptions)
let newestAsset = fetchResult.lastObject
return newestAsset as! PHAsset?
}
The result is this:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With