GuidesDiscussions
Log In
Guides

Implementing Installation Services (VPL)

The Installation Services module encompasses all the features of our Virtual Preload App. The following documentation explains how to implement it and what is needed for its proper functioning.

⚠️ Important

The Installation Services module can only be integrated into a preloaded application for it to function properly.

More Informatcion : Preloading APK

Installation Services Module

To utilize preloading services such as silent application installation or integrate a custom configuration wizard during phone startup, it is necessary to include one of the following dependencies:

ModuleDescriptionDependency
InstallationWZServicesEnables utilizing the installation service during First Boot (VPL) and displaying a configuration screen (Siprocal Wizard) upon initial power-up.implementation 'com.github.Digita1Reef.phoenix:installation-wz-services:<version>'

Example:

implementation "com.github.Digita1Reef.phoenix:<variant>:<version>"
implementation "com.github.Digita1Reef.phoenix:installation-wz-services:<version>"
implementation("com.github.Digita1Reef.phoenix:<variant>:<version>")
implementation("com.github.Digita1Reef.phoenix:installation-wz-services:<version>")

Note: For these services to work correctly, the application must be preloaded on the device into
the /system/priv-app/

Add the initialization on SiprocalSDKSettings

You need initialize the module and the wizard on the SDK initialization, example:

public class App extends Application { 
  @Override  
  public void onCreate(){  
        super.onCreate();  
        SiprocalSDKSettings siprocalSDKSettings=new SiprocalSDKSettings.Builder()  
           .setInstallationServices(InstallationServices()) // for installation-wz-services  
           .setWizardServices(WizardServices.getInstance()) // for installation-wz-services  
           .build();  
        SiprocalSDK.init(this, siprocalSDKSettings);  
     }
}

class App: Application() {
  override fun onCreate() {
      super.onCreate()
      val siprocalSDKSettings: SiprocalSDKSettings = SiprocalSDKSettings.Builder()        
          .setInstallationServices(InstallationServices()) // for installation-wz-services
          .setWizardServices(WizardServices.getInstance()) // for installation-wz-services
          .build()
      SipocalSDK.INSTANCE.init(this, siprocalSDKSettings)
  }
}

Permissions Required for Installation Services

To install apps it is necesary to add the permision:

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

Permissions Required for Capture IMEI

If you want to capture IMEI(Sensitive Data) it is necesary to add the permision:

<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />

Support to Invisible App

When your application does not appear in the application box and you do not have any activity
configured with android.intent.category.LAUNCHER, it is necessary to add the following lines to the
initial configuration of the SDK in order to correctly display the push in-app notifications.

public class App extends Application { 
  @Override
  public void onCreate(){
      super.onCreate();
      SiprocalSDKSettings siprocalSDKSettings=new SiprocalSDKSettings.Builder()
        .enableActivityHandling("<Your Activity>".class)
        .build();
      SiprocalSDK.init(this, siprocalSDKSettings);
   }
}
class App: Application() {
  override fun onCreate() {
      super.onCreate()
      val siprocalSDKSettings: SiprocalSDKSettings = SiprocalSDKSettings.Builder()
          .enableActivityHandling("<Your Activity>"::class.java)
          .build()
      SipocalSDK.init(this, siprocalSDKSettings)
  }
}