Skip to main content

Permissions & Privacy

When using capabilities or components, Lens Studio automatically declares the necessary permissions in the project.

Spectacles Lenses use 2 important types of permissions:

  1. Sensitive User Data
  2. External Connectivity

The Spectacles camera captures information about surroundings, enabling interaction with AR content in the environment. The microphone captures voice data for features like recorded videos and voice commands. Both camera and microphone access are essential for the device to function properly. Spectacles can also use location data to support location-based Lenses and features. The API page tags these APIs as “Exposes User Data”.

When camera is not used directly, and APIs returns processed data, such as face landmarks, hand joints, surfaces, the camera is not considered to be used.

Some Lenses run solo, while others communicate with external devices through Connected Lenses or RemoteServiceModule. During such interactions, Spectacles prevent simultaneous use of these capabilities with sensitive user data to ensure privacy in published Lenses.

Access to some internal Snap Cloud services, as Remote Service Gateway, doesn't count as external connectivity. This means that you can use Remote Service Gateway with sensitive user data in published Lenses.

To see which permissions your project declares, go to the Spectacles section inside your Project Settings.

Using Non-Declared Permissions Features

In some cases, you might use capabilities that require permission declarations dynamically through scripts.

For example, when you dynamically instantiate a HeadComponent through script:

let headComponent = script.getSceneObject().createComponent('Component.Head');
let headLandMarks = headComponent.getLandmarks();
require('LensStudio:FaceTrackingModule');
let headComponent = script.getSceneObject().createComponent('Component.Head');
let headLandMarks = headComponent.getLandmarks();

In this case, Lens Studio doesn't automatically declare the permission, unlike when you attach a HeadComponent to a SceneObject in the Scene Hierarchy Panel. Lenses that attempt to use features without declaring the permissions in their Lens Project automatically get a permission denied by the SnapOS system.

To learn more about the types of permissions Lenses can use, review the List of Permissions Types section.

List of Permissions Types

Permission TypeAssets & APIs Requesting Permission
Colocated Connected LensesConnectedLensModule
Remote Connected LensesConnectedLensModule
Speech to TextVoiceMLModule
DialogModule
Text to SpeechTextToSpeechModule
Remote APIsRemoteServiceModule
RemoteMediaModule
BitmojiBitmojiModule
Camera - SnapMLCameraTextureProvider
CameraModule
Microphone - SnapMLMicrophoneAudioProvider
VoiceMLModule
DialogModule
GPS - PreciseRawLocationModule
Location - CoarseProcessedLocationModule
FaceFaceRenderObjectProvider (Mesh)
HeadComponent (Landmarks)
FaceTrackingModule
Foundational TrackersDeviceTracking
DeviceTrackingModule
Supplementary TrackersSegmentationTextureProvider
ObjectTrackingAsset
MarkerTrackingAsset
DepthTextureProvider
TrackedPoint
Point Cloud
World Mesh
Body TrackersObject3DAsset
InternetRemoteServiceModule
Input Framework (Text)TextInputModule
Was this page helpful?
Yes
No