Associate the device with a user
You can associate your own ID to each device. In this way it will be easier and more intuitive for you to work with our tool. For example:
- If your users have been identified, you could use your user ID, or email, or any other data that you are used to working with.
- If your users are anonymous because they have not logged into the app, you may have a Google Analytics or Commscore metric system. You could use the ID provided by these tools.
To make this association between your custom ID (externalId), and the identifier handled by indigitall (deviceId), you have to invoke the logIn method:
//Remember to put your external code here
indigitall.LogIn("YOUR_EXTERNAL_CODE", (device) =>
{
//Log device
}, (code, message) =>
{
Console.WriteLine("SetExternalCode.iOS error code:" + code + " message: " + message);
});
// to logOut
indigitall.LogOut((device) =>
{
//Log device
}, (code, message) =>
{
Console.WriteLine("SetExternalCode.iOS error code:" + code + " message: " + message);
});
Do not worry about anything. Your IDs are irreversibly encrypted on the phone itself and sent securely to our servers. Not even the indigitall team can know this information.
WiFi filter
If it is required to collect the user's WiFi information, in addition to the indigitall panel configuration, you must add the parameter wifiFilterEnabled when the SDK is initialized:
indigitall.Init("YOUR APPKEY", "YOUR SENDER ID", requestLocation: true, wifiFilterEnabled: true)
//or also
Com.Indigitall.Maui.MPushConfiguration config = new ();
config.AppKey = "<YOUR-APP-KEY>";
config.SenderId = "<YOUR-SENDER-ID>";
config.RequestLocation = true;
config.WifiFilterEnabled = true;
config.LayoutBasic = Models.INDMLayoutbasic.Custom;
indigitall.Init(config)
- The location permission must be accepted by the user
- Please note that the WiFi scan time when the app is in the background or closed may be inaccurate.
In order to obtain the Wi-Fi information in android, the following permissions and services declared in the manifest are needed:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
// ANDROID 12 WIFI
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
//WiFi service
<service
android:name="com.indigitall.android.services.WifiStatusService"
android:permission="android.permission.BIND_JOB_SERVICE" >
</service>
<receiver android:name="com.indigitall.android.receivers.WifiWakeLockReceiver">
<intent-filter>
<action android:name="AlarmReceiver.Action.NETWORK_ALARM" />
</intent-filter>
</receiver>
Likewise, you must add in the project options in Xcode, in Signing & Capabilities the option Access WiFi Information:
Custom domain
If you are ENTERPRISE CUSTOMER you have to add this parameter in the configuration so that the SDK points to the correct environment:
Com.Indigitall.Maui.MPushConfiguration config = new ();
config.AppKey = "<YOUR-APP-KEY>";
config.SenderId = "<YOUR-SENDER-ID>";
config.UrlDeviceApi = "https://device-api.indigitall.com/v1";
config.UrlInAppApi = "https://device-api.indigitall.com/v2";
indigitall.Init(config)