android - Truecaller SDK 错误:没有可用的兼容客户端。请更改您的范围
问题描述
我正在尝试在我的应用程序中实现 truecaller,并且我所做的完全是用 Truecaller Docs 编写的。但它仍然给我错误。
我试过谷歌搜索问题,但仍然找不到解决方案。
这是错误:
No compatible client available. Please change your scope
这是我的代码:
public class MainActivity extends FragmentActivity implements ITrueCallback {
private ViewPager2 viewPager2;
private List < Integer > imagesList;
private Button btnContinue, btnLoginTruecaller;
private EditText etPhone;
private Preferences preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Constants.removeStatusBar(this);
TruecallerSdkScope trueScope = new TruecallerSdkScope.Builder(this, sdkCallback)
.consentMode(TruecallerSdkScope.CONSENT_MODE_BOTTOMSHEET)
.buttonColor(Color.parseColor("#000000"))
.buttonTextColor(Color.parseColor("#000000"))
.loginTextPrefix(TruecallerSdkScope.LOGIN_TEXT_PREFIX_TO_GET_STARTED)
.loginTextSuffix(TruecallerSdkScope.LOGIN_TEXT_SUFFIX_PLEASE_VERIFY_MOBILE_NO)
.ctaTextPrefix(TruecallerSdkScope.CTA_TEXT_PREFIX_USE)
.buttonShapeOptions(TruecallerSdkScope.BUTTON_SHAPE_ROUNDED)
.privacyPolicyUrl("<<YOUR_PRIVACY_POLICY_LINK>>")
.termsOfServiceUrl("<<YOUR_PRIVACY_POLICY_LINK>>")
.footerType(TruecallerSdkScope.FOOTER_TYPE_NONE)
.consentTitleOption(TruecallerSdkScope.SDK_CONSENT_TITLE_LOG_IN)
.sdkOptions(TruecallerSdkScope.SDK_OPTION_WITHOUT_OTP)
.build();
TruecallerSDK.init(trueScope);
btnContinue = findViewById(R.id.btnContinue);
etPhone = findViewById(R.id.etPhone);
btnLoginTruecaller = findViewById(R.id.btnLoginTruecaller);
TruecallerSDK.getInstance().getUserProfile(this);
btnLoginTruecaller.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {}
});
preferences = new Preferences(this);
if (preferences.isLoggedin()) {
Intent intent = new Intent(this, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
imagesList = new ArrayList < > ();
imagesList.add(R.drawable.black);
imagesList.add(R.drawable.pubg);
// ViewPagerAdapter adapter = new ViewPagerAdapter(this,imagesList);
// viewPager2.setAdapter(adapter);
btnContinue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
preferences.setMobileNumber(etPhone.getText().toString());
Intent intent = new Intent(MainActivity.this, OTPActivity.class);
intent.putExtra("phone", etPhone.getText().toString());
startActivity(intent);
}
});
}
private final ITrueCallback sdkCallback = new ITrueCallback() {
@Override
public void onSuccessProfileShared(@NonNull TrueProfile trueProfile) {
}
@Override
public void onFailureProfileShared(@NonNull TrueError trueError) {
}
@Override
public void onVerificationRequired(TrueError trueError) {
}
};
@Override
public void onSuccessProfileShared(@NonNull TrueProfile trueProfile) {
}
@Override
public void onFailureProfileShared(@NonNull TrueError trueError) {
}
@Override
public void onVerificationRequired(TrueError trueError) {
}
}
这是我正在关注的 truecaller 文档:
https://docs.truecaller.com/truecaller-sdk/android/integrating-with-your-app/setup
解决方案
感谢分享以上信息。
您面临的例外情况:
没有可用的兼容客户端。请更改您的范围
仅当您从 TruecallerSDK 调用不在您在初始化 SDK 时提供的范围内的方法时才会出现。
例如,如果未安装 Truecaller 应用程序或安装了 Truecaller 应用程序但未登录,并且您将 sdkOptions 提到为 TruecallerSdkScope.SDK_OPTION_WIHTOUT_OTP,那么在调用 TruecallerSDK.getInstance().getUserProfile() 方法时,您将面临此异常。
为了避免再次遇到这种情况,您可以检查 TruecallerSDK.getInstance.isUsable 是否为 True,然后仅调用 TruecallerSDK.getInstance.getUserProfile 或者您可以将 sdkOptions 范围更改为 TruecallerSdkScope.SDK_OPTION_WITH_OTP 以验证 Truecaller 和 Non- Truecaller 用户
如果您将来遇到任何疑问,请随时通过我们的支持渠道 https://developer.truecaller.com/support 与我们联系,以获得更快、更专业的回复。
看待,
帕思
推荐阅读
- django - Django 自动增量字段
- javascript - 如何在 React jsx 中使用 innerHTML 渲染组件
- sql - 按日期执行计数和除法
- git - 使用主 GitExtensions 保持分支更新
- javascript - jQuery比较对象总是结果为假
- javascript - React / Javascript在array.map中找不到元素
- php - 显示来自用户/ Laravel 的个人资料信息
- android - 如何在操作栏下保留 VideoView
- typescript - 如何为导出纯对象的js文件编写.d.ts文件?
- php - Laravel 5.7:上次迁移创建表但未在迁移表中注册