Embed Veezer Photos in An Other App
For app developpers: Learn how to use Veezer as a document viewer in your own application.
Veezer can be embedded in your own application to visualize Veezer photos and propose geolocalisation on photo.
Example of embedded Veezer photo display (the back button goes back to caller app):

The integration does not require any additional software components in your application.
To view a Veezer photo in OVZ format, your application can check if Veezer application is available, then start Veezer by specifying the desired settings.
Prepare your Veezer photos
Prepare your photos with Veezer and use the Share function to create an OVZ file.
See tutorial Share a Photo.
We recommend to use the options Protect content or Readonly.
Detect if Veezer is installed
You can propose a specific path in your application when Veezer is not installed, for instance, explain the benefit and invite the user to download the application.
Example of message:
Install our partner app Veezer to experience geolocation on photos.
View the route in detail and precisely track your position on the photo so you don't get lost during your outing!
Android
Use getPackageInfo with Veezer package id.
val isVeezerInstalled = try {
context.packageManager.getPackageInfo("com.pixmapstudio.veezer1", 0)
true
} catch (e: PackageManager.NameNotFoundException) {
false
}
iOS
Use canOpenUrl with veezer scheme.
guard let veezerUrl = URL(string: "veezer://") else { return }
isVeezerInstalled = UIApplication.shared.canOpenURL(veezerUrl)
Display a photo with Veezer
Build an URL to the OVZ file to display and send it to Veezer.
Use the option embbeded mode for a smooth integration.
Android
Use Intent and Extra for options.
val uri = FileProvider.getUriForFile(
context,
"${context.packageName}.fileprovider",
file
)
val intent = Intent(Intent.ACTION_VIEW).apply {
setDataAndType(uri, "application/ovz")
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
setPackage("com.pixmapstudio.veezer1")
putExtra("mode", "embedded")
putExtra("shareable", "false")
}
context.startActivity(intent)
iOS
Use UIDocumentInteractionController and annotations for options.
Register the OVZ format in Info.plist UTImportedTypeDeclarations (see Info.plist below).
Use DocumentLauncher to launch Veezer from a file URL with options.
var annotation: [String: Any] = [:]
annotation["mode"] = "embedded"
annotation["callback_url"] = callbackUrl
DocumentLauncher.shared.launch(fileURL: fileURL, annotation: annotation)
On iOS, it's recommended to use the callback url option to get a proper behavior when Back button is pressed:
If not already done, implement a basic deeplink by registering your custom URL scheme in Info.plist CFBundleURLSchemes (see Info.plist below).
Implement the application handler .onOpenURL to setup custom action.
Info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>veezer</string>
</array>
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>com.pixmapstudio.ovz-file</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>ovz</string>
</array>
<key>public.mime-type</key>
<string>application/ovz</string>
</dict>
</dict>
</array>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>myapp</string> <!-- Your host app's scheme. eg myapp:// -->
</array>
<key>CFBundleURLName</key>
<string>Host App Callback</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
</dict>
</array>
</dict>
</plist>
Options
Embedded mode (recommended)
mode:embedded
With embedded mode, Veezer directly opens the photo the photo view screen and the Back button goes back to your application.
Callback url (recommended on iOS)
callback_url:
(used only with embedded mode)
Specify an URL to call when pressing Back button, this way your app can perform a custom action when the visualization in Veezer in finished. On iOS, any deep link handled by your app allows to return smoothly to your app when the Back button is pressed.
Shareable
shareable:false
Discard Share feature in Veezer user interface.
Contact us if you need help or more advanced integration!