There shouldn't be any issue with iOS, the CameraRoll is working perfectly fine in our AIR 32 apps running on iOS 13 (and iOS 12, iOS 9, etc.). Sounds more like some sort of publishing issue, maybe with the AIR version being used.
I'm guessing you have import flash.media.CameraRoll somewhere in the code as well, so it knows what that class is and its properties, and even if you're targeting desktop instead of mobile that class should still let you use it in AIR without any errors/exceptions (though you should always check supportsAddBitmapData first before trying anything with the CameraRoll, since that will return false on desktop).
Here's a quick example of how we're doing it, which works for all recent versions of iOS and Android, and fails gracefully on AIR desktop:
package {
import flash.events.Event;
import flash.media.CameraRoll;
import flash.events.PermissionEvent;
import flash.permissions.PermissionStatus;
import flash.display.BitmapData;
public class TestCameraRoll {
//CameraRoll instance
private var cameraRoll:CameraRoll = new CameraRoll();
//sample bitmap to save to the device's photos/cameraroll:
private var bmp:BitmapData = new BitmapData(1024, 768, false, 0xFFFF0000);
public function TestCameraRoll():void {
}
public function saveToCameraRoll(e:Event = null):void {
try {
//always check if it's supported first (will be true for mobile, false for desktop)
if (CameraRoll.supportsAddBitmapData) {
//check if permission was already granted in a previous session:
if (CameraRoll.permissionStatus == PermissionStatus.GRANTED){
//safe to add, it will now appear in the device photos
cameraRoll.addBitmapData(bmp);
} else {
//need to request permission first
/*
for iOS, you also need to set these keys in your iPhone InfoAdditions
in the application XML or else THIS WILL NOT WORK:
<key>NSCameraUsageDescription</key>
<string>Required to save your images.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Required to save your images.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Required to save your images.</string>
*/
//listener for the user's response:
cameraRoll.addEventListener(PermissionEvent.PERMISSION_STATUS, permissionChanged);
//request permission, will display the permission popup on their device:
cameraRoll.requestPermission();
}
} else {
//Camera Roll does not support addBitmapData.
}
} catch (err:Error) {
}
}
public function permissionChanged(e:PermissionEvent):void {
if (e.status == PermissionStatus.GRANTED) {
//Permission was now granted by the user after prompting, run the command again now that it's allowed:
saveToCameraRoll();
}
}
}
}