QiYuHelper.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package com.datarecovery.master.sdk.qiyu;
  2. import android.app.Application;
  3. import android.content.Context;
  4. import android.text.TextUtils;
  5. import com.atmob.common.data.KVUtils;
  6. import com.atmob.common.logging.AtmobLog;
  7. import com.atmob.common.runtime.ContextUtil;
  8. import com.datarecovery.master.BuildConfig;
  9. import com.datarecovery.master.R;
  10. import com.datarecovery.master.data.repositories.AccountRepository;
  11. import com.datarecovery.master.module.browser.BrowserActivity;
  12. import com.datarecovery.master.utils.SystemUtil;
  13. import com.qiyukf.nimlib.sdk.RequestCallback;
  14. import com.qiyukf.nimlib.sdk.StatusBarNotificationConfig;
  15. import com.qiyukf.unicorn.api.OnMessageItemClickListener;
  16. import com.qiyukf.unicorn.api.UICustomization;
  17. import com.qiyukf.unicorn.api.Unicorn;
  18. import com.qiyukf.unicorn.api.YSFOptions;
  19. import com.qiyukf.unicorn.api.YSFUserInfo;
  20. import java.util.UUID;
  21. public class QiYuHelper {
  22. private static final String TAG = "QiYuHelper";
  23. private static final String ysfAppId = BuildConfig.QIYU_APP_KEY;
  24. private static final String VISITOR_KEY = "visitor_key";
  25. public static void init(Application application) {
  26. Unicorn.config(application, ysfAppId, options(), new GlideImageLoader(application));
  27. }
  28. public static void initSdk() {
  29. Unicorn.initSdk();
  30. if (TextUtils.isEmpty(AccountRepository.token)) {
  31. setVisitorInfo();
  32. }
  33. }
  34. private static void setVisitorInfo() {
  35. YSFUserInfo userInfo = new YSFUserInfo();
  36. userInfo.userId = getUserId();
  37. String appName = ContextUtil.getContext().getString(R.string.app_name) + "-访客";
  38. // CRM 扩展字段
  39. userInfo.data = "[\n" +
  40. " {\"key\":\"real_name\", \"value\":\"" + appName + "\"},\n" +
  41. getAppCommonInfo() +
  42. "]";
  43. Unicorn.setUserInfo(userInfo, new RequestCallback<Void>() {
  44. @Override
  45. public void onSuccess(Void aVoid) {
  46. AtmobLog.d(TAG, "set visitor info success");
  47. }
  48. @Override
  49. public void onFailed(int errorCode) {
  50. AtmobLog.d(TAG, "set visitor info failed, errorCode: " + errorCode);
  51. }
  52. @Override
  53. public void onException(Throwable throwable) {
  54. AtmobLog.d(TAG, "set visitor info exception: " + throwable.getMessage());
  55. }
  56. });
  57. }
  58. private static YSFOptions options() {
  59. YSFOptions options = new YSFOptions();
  60. options.statusBarNotificationConfig = new StatusBarNotificationConfig();
  61. options.onMessageItemClickListener = BrowserActivity::start;
  62. return options;
  63. }
  64. public static void logout() {
  65. Unicorn.logout();
  66. KVUtils.getDefault().putString(VISITOR_KEY, null);
  67. }
  68. public static void openServiceActivity(Context context) {
  69. Unicorn.openServiceActivity(context, "客服", null);
  70. }
  71. private static String getUserId() {
  72. String userId;
  73. if (TextUtils.isEmpty(userId = KVUtils.getDefault().getString(VISITOR_KEY, null))) {
  74. userId = UUID.randomUUID().toString();
  75. KVUtils.getDefault().putString(VISITOR_KEY, userId);
  76. }
  77. return userId;
  78. }
  79. public static void setUserInfo(String phone, String serverUserId, String token) {
  80. YSFUserInfo userInfo = new YSFUserInfo();
  81. // App 的用户 ID
  82. userInfo.userId = getUserId();
  83. // 当且仅当开发者在管理后台开启了 authToken 校验功能时,该字段才有效
  84. // userInfo.authToken = token;
  85. String appName = ContextUtil.getContext().getString(R.string.app_name) + "-" + phone;
  86. // CRM 扩展字段
  87. userInfo.data = "[\n" +
  88. " {\"key\":\"real_name\", \"value\":\"" + appName + "\"},\n" +
  89. " {\"key\":\"mobile_phone\", \"hidden\":false, \"value\":\"" + phone + "\"},\n" +
  90. " {\"index\":0, \"key\":\"version\", \"label\":\"用户Id\", \"value\":\"" + serverUserId + "\" },\n" +
  91. getAppCommonInfo() +
  92. "]";
  93. Unicorn.setUserInfo(userInfo, new RequestCallback<Void>() {
  94. @Override
  95. public void onSuccess(Void aVoid) {
  96. AtmobLog.d(TAG, "set visitor info success");
  97. }
  98. @Override
  99. public void onFailed(int errorCode) {
  100. AtmobLog.d(TAG, "set visitor info failed, errorCode: " + errorCode);
  101. }
  102. @Override
  103. public void onException(Throwable throwable) {
  104. AtmobLog.d(TAG, "set visitor info exception: " + throwable.getMessage());
  105. }
  106. });
  107. }
  108. private static String getAppCommonInfo() {
  109. String info = " {\"index\":1, \"key\":\"version\", \"label\":\"应用版本\", \"value\":\"v" + SystemUtil.getVersionName(ContextUtil.getContext()) + "\" },\n" +
  110. " {\"index\":2, \"key\":\"appName\", \"label\":\"应用名称\", \"value\":\"" + ContextUtil.getContext().getString(R.string.app_name) + "\" },\n" +
  111. " {\"index\":3, \"key\":\"packageName\", \"label\":\"包名\", \"value\":\"" + ContextUtil.getApplication().getPackageName() + "\" },\n";
  112. return info;
  113. }
  114. }