Autoupload
To start auto upload, you first need to upload the existing data on the server and scan the device gallery.
#
InitializationAssume that you have created an instance of CloudikePhotos - the Photos Manager.
let photosManager: CloudikePhotos
#
Read Photos From the Device GalleryThere are two ways to start CloudikePhotos: with photo auto upload enabled and without it.
public final class CloudikePhotos {// ...public func configureWithUploadSettings(_ uploadSettings: CloudikeAutoUploadSettings, with completion: ((NSError?) -> Void)?)// ...}
// ...
photosManager.configureWithUploadSettings(...)
If the isAutoUploadEnabled flag in CloudikeAutoUploadSettings is false, then to scan the local gallery after calling the method for configuring the SDK, you need to call the method:
public final class CloudikePhotos { ...public func updateLocal()...}
// in your code it might look like:
photosManager.updateLocal()
#
Start/Stop AutouploadTo start or stop auto uploading, you need to call the CloudikePhotosKit method and pass the CloudikeAutoUploadSettings object with the auto upload settings:
To start autoupload for photo/video from your device, you should call:
while initializaition process
let isBackgroundMode: Bool (is "true" if app is in background mode) // optional parameterlet settings = CloudikeAutoUploadSettings(isAutoUploadEnabled: true, ....)photos.configureWithUploadSettings(uploadSettings, in: isBackgroundMode) { // completion block}
while app is running
let settings = CloudikeAutoUploadSettings(isAutoUploadEnabled: true, ....)self.photosManager.updateUploadSettings(settings) { // completion block}
To stop autoupload for photo/video from your device, you should call:
let settings = CloudikeAutoUploadSettings(isAutoUploadEnabled: false, ....)self.photosManager.updateUploadSettings(settings) { // completion block}
#
Autoupload SettingsThe auto upload settings configuration should be set up with the CloudikeAutoUploadSettings object. The default settings contain the following fields and values:
- isAutoUploadEnabled (Bool) - auto upload on/off.
- is3gUploadEnabled (Bool) - cellular data upload is allowed.
- minBatteryLevel (Bool) - minimum battery charge for auto upload.
- isVideoUploadEnabled (Bool) - video upload is allowed.
- maxRetryCount (Bool) - max retry count for particular photo/video. isPhotosUploadFirst Bool // video upload after all photo isBackgroundAutoUploadEnabled bool // auto upload is available in app background mode
To update auto upload settings, call:
let settings = CloudikeAutoUploadSettings(...)photosManager.update(settings)
#
Monitoring Autoupload StatusThe CloudikePhotos upload status can be tracked by setting up the closure:
photosManager.uploadStatusDidChange(((CloudikeAutoUploadStatus) -> Void)?)
The CloudikeAutoUploadStatus object contains values which describe a state of photo/video auto upload:
let status: Statuslet reasons: Set<Reason>let totalPhotos: Intlet photosUploaded: Intlet photosLeft: Intlet isDeviceGalleryScanned: Bool
The Status enum object has the cases below:
- uploading
- paused
The Reason enum obect has the cases below:
- backendTimelineNotDownloaded Backend gallery has not been read yet.
- deviceGalleryFirstBatchNotScanned Local gallery first batch of assets has not been read yet.
- competitionNotFinished Apps negotiating about which one will be responsible for uploading photos to the cloud.
- anotherAppInitialized Another app is responsible for uploading to the cloud. This app will not upload.
- autoUploadDisabled Auto upload is disabled in upload configuration.
- galleryPermissionNotGranted Permission to device photo gallery hasn't been granted.
- noInternetConnection No internet connection.
- noWiFiConnection No Wi-Fi connection, but the use of mobile network is prohibited.
- lowBattery Not enough battery level to continue auto-upload.
- lowDeviceStorage User does not have enough disk space on device to perform auto upload.
- lowCloudStorage User does not have enough space in the cloud storage.
- tokenExpired Auth token has been expired. App need to re-login user.
- loggingOut SDK is being logged out.
#
(Auto Upload Priority, Ongoing notification etc)TBD