ENGAGE SDK Permissions

ENGAGE® SDK Permissions

Android Permissions

The ENGAGE SDK requires certain Android app permissions to be managed and coordinated by the host app. Without prompting users to enable these permissions, the SDK will not perform as expected. Some services provided by the SDK will not work properly without them. The main permission set supported:

  • Contact

ENGAGE functionality is driven by the permissions a host app is comfortable asking the consumers. The set of ENGAGE components included in the host app’s build.gradle file also relates to the functionality and permissions required.

Permission SetFunctionalityENGAGE Components
READ_CONTACTS and WRITE_CONTACTS
  • Displays content
  • Content is not cleaned up immediately after call
  • Call telemetry and answer rates are not captured
  • 'com.firstorion:engage-core:3.1.X'
  • 'com.firstorion:engage-contacts:3.1.X'
  • 'com.firstorion:engage-firebase:3.1.X'

  • Contact - the system dialer shows a contact that has been previously created by the SDK on an incoming call
    • READ_CONTACTS and WRITE_CONTACTS
      • The Contacts group is categorized as a dangerous permission
      • READ_CONTACTS is required to prevent the SDK from overwriting an existing contact
      • WRITE_CONTACTS is required to create and remove the contact

iOS Permissions

The ENGAGE SDK requires certain iOS app permissions to be managed and coordinated by the host app. The SDK will not perform as expected if these permissions are not granted.

❗️

The following permissions are required to be set in the host app info.plist:

  • Contacts
  • Notifications

ENGAGE functionality is driven by the permissions a host app is comfortable asking the consumers. The set of ENGAGE components included in the host app’s build file also relates to the functionality and permissions required.

Add this block of code into your podfile for permissions. This code sets up build configurations in the Podfile to define preprocessor macros for handling permissions related to contacts and notifications.

# Start of the permission_handler configuration 
    target.build_configurations.each do |config| 
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ 
        '$(inherited)', 
        'PERMISSION_CONTACTS=1', 
        'PERMISSION_NOTIFICATIONS=1', 
      ] 
    end 


📘

NOTE

The host app has the option of alerting ENGAGE to permission changes manually.

 Engage.instance.contactPermissionsUpdated();

This step is optional as ENGAGE will check the permission state on its own.