Once you receive a callback in your VerificationCallback
instance with the requestCode TYPE_MISSED_CALL_RECEIVED
or TYPE_OTP_RECEIVED , you can complete the verification process by calling the following method from within your activity :
Copy
You need to create a TrueProfile instance by passing the user's first and last name as defined above.
Please note that the first name and last name values to be passed in the above method call need to follow below mentioned rules :
The strings need to contains at least 1 alphabet, and cannot be completely comprised of numbers or special characters
String length should be less than 128 characters
First name is a mandatory field, last name can be empty ( but non nullable )
Depending on whether the verification medium is drop call or OTP, you need to call one of the following methods respectively:
DropcallOTPCopy
You need to call this method once you have received callback with requestCode as TYPE_MISSED_CALL_RECEIVED
in your VerificationCallback
instance
After you call the above method, you will receive a callback in your VerificationCallback
instance with requestCode as TYPE_VERIFICATION_COMPLETE,
which completes your verification process.
Whenever you get the verification callback with requestType as TYPE_VERIFICATION_COMPLETE,
you would get an accessToken as a parameter in the verificationDataBundle. You can use this access token to validate the authenticity of the verification flow by making an API call from your server to Truecaller's server. For details on this part, please refer here.
This section defines the steps that can be used to trigger verification of non Truecaller app users which will be powered via Truecaller's drop call based verification flow
In order to verify non Truecaller users, the SDK requires the below mentioned permissions -
Copy
Once you receive a callback in the ITrueCallback#onVerificationRequired(),
you can initiate the verification for the user by calling the following method:
Copy
Here -
the first parameter is the country code of the mobile number for which the verification needs to be triggered
the second parameter (PHONE_NUMBER_STRING) is the mobile number to be verified. Please ensure proper validations are in place so as to send correct phone number string to the above method, otherwise an exception would be thrown
the third parameter is an instance of VerificationCallback
as defined here
the fourth parameter is an instance of FragmentActivity
Please note that Truecaller SDK v2.8.0 currently supports the verification for non-Truecaller users for Indian numbers only.
Once you initiate the verification via TruecallerSDK.getInstance().requestVerification()
method, you will receive either a callback in your VerificationCallback
instance with a specificrequestType
as described below
Copy
onRequestSuccess() method is called under any of the following scenarios -
When drop call is successfully initiated for the input mobile number. In this case, you will get the requestCode as VerificationCallback.TYPE_MISSED_CALL_INITIATED
When drop call is successfully detected on that device by the SDK present in your app. In this case, you will get the requestCode as VerificationCallback.TYPE_MISSED_CALL_RECEIVED
When the verification is successful for a particular number. In this case, you will get the requestCode as VerificationCallback.TYPE_VERIFICATION_COMPLETE
When the user is already verified on that particular device before. In this case, you will get the requestCode as VerificationCallback.TYPE_PROFILE_VERIFIED_BEFORE
When requestCode is VerificationCallback.TYPE_MISSED_CALL_INITIATED
, you will receive an additional parameter for the time to live i.e TTL (in seconds) which is passed as String extra in the VerificationDataBundle
of onRequestSuccess()
. This value determines amount of time left to complete the verification. You can use this value to show a waiting message to your user before they can try for another attempt. Once the TTL expires, you can either auto-retry the verification by calling the requestVerification() method automatically with the same input parameters OR you can also take the user back to the number input screen to enter a different number for verification.
NOTE: Truecaller SDK v2.5.0 & above won't throw timeout exceptions for missed call, so please use the TTL as stated above to control the time out scenario.
When the requestCode is VerificationCallback.TYPE_ALREADY_VERIFIED_BEFORE or VerificationCallback.TYPE_VERIFICATION_COMPLETE, it means that the user verification via Truecaller SDK is complete. In these cases, the SDK will share an additional access token with your application, which you may then use to validate the response at your server end. To fetch the access token, you may use the following code snippet :
//For when the control goes to TYPE_ALREADY_VERIFIED_BEFORE extras.getProfile().accessToken
//For when the control goes to TYPE_VERIFICATION_COMPLETE extras.getString(VerificationDataBundle.KEY_ACCESS_TOKEN)
Post fetching the access token, you may perform the server side validation by referring to the steps mentioned in the later part of the documentation here.
onRequestFailure() method will be called when some error has occurred while verifying the provided mobile number. You will receive the appropriate error message from TrueException using TrueException#getExceptionMessage().
For details of different possible error types you may encounter, please refer to the next section.
Handling error responses for cases of verifying non-Truecaller users
Error Code | Error Message | Description |
---|---|---|
4
"Desired permissions are missing"
When the requisite permissions are missing or not granted while making the verification request
6
“Sim state is not ready”
When the SIM state on the device is not ready
7
“Airplane mode is ON”
When the device is on airplane mode, hence causing missed call to not go through
2
"Phone number limit reached”
When the used mobile number has exceeded the maximum number of allowed verification attempts within a span of 24 hours from the time the first verification attempt was made
2
“Request id limit reached”
When the used device exceeds the maximum number of allowed verification attempts in a span of 24h
2
“Invalid partner credentials.”
2
“Something went wrong: Failed to create installation.”
In case of Truecaller internal service error
2
“Invalid phone number”
When the input mobile number is not a valid mobile number
2
“Profile has not been created yet”
When the user has been successfully verified, but for some reason their profile is not created which could be due to incorrect profile data while creating TrueProfile() in verifyMissedCall method or due to network issues