chore:移除七鱼客服SDK

This commit is contained in:
Max
2024-01-15 14:13:10 +08:00
parent cbd92a2f10
commit 81b1cf8124
8 changed files with 0 additions and 402 deletions

View File

@@ -282,8 +282,6 @@ dependencies {
implementation 'com.github.mmin18:realtimeblurview:1.2.1'
implementation 'com.qiyukf.unicorn:unicorn:8.2.0'
implementation 'com.github.yalantis:ucrop:2.2.7'
}

View File

@@ -59,7 +59,6 @@ import com.nnbc123.app.main.helper.NoticationsUiHelper;
import com.nnbc123.app.miniworld.activity.MiniWorldGuestPageActivity;
import com.nnbc123.app.module.Extras;
import com.nnbc123.app.module_hall.secretcode.PwdCodeMgr;
import com.nnbc123.app.qiyukefu.CustomerServerHelper;
import com.nnbc123.app.quick_pass.QuickPassLoginAct;
import com.nnbc123.app.service.DaemonService;
import com.nnbc123.app.ui.im.ImInitHelper;
@@ -499,7 +498,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
getMvpPresenter().exitRoom();
QuickPassLoginAct.start(MainActivity.this);
PmDialogShowMrg.get().onLogout();
CustomerServerHelper.logout();
}
public void onNeedLogin() {
@@ -654,8 +652,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
checkShowAnchorCardView();
onTabClick(mCurrentTabType);
CustomerServerHelper.onLoginInfoUpdate(UserUtils.getUserInfo());
}

View File

@@ -52,7 +52,6 @@ import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.util.NIMUtil;
import com.nnbc123.app.AgentActivity;
import com.nnbc123.app.qiyukefu.CustomerServerHelper;
import com.nnbc123.library.common.application.BaseApp;
import com.nnbc123.library.common.file.FileHelper;
import com.nnbc123.library.utils.ResUtil;
@@ -284,8 +283,6 @@ public class XChatApplication extends BaseApp {
initLinkedMe();
MobSDK.init(context);
MobSDK.submitPolicyGrantResult(true);
} else {
CustomerServerHelper.init(instance, null);
}
LogUtils.d("init time = " + (System.currentTimeMillis() - startTime) + "ms");

View File

@@ -30,11 +30,9 @@ import com.nnbc123.app.home.activity.VisitorListActivity
import com.nnbc123.app.home.adapter.MeCenterAdapter
import com.nnbc123.app.home.helper.BannerHelper
import com.nnbc123.app.home.helper.OpenRoomHelper
import com.nnbc123.app.qiyukefu.CustomerServerHelper
import com.nnbc123.app.skill.activity.SkillHomeActivity
import com.nnbc123.app.skill.activity.SkillHomeActivity.Companion.start
import com.nnbc123.app.support.LevelIconHelper
import com.nnbc123.app.ui.patriarch.PatriarchModeActivity
import com.nnbc123.app.ui.pay.ChargeActivity
import com.nnbc123.app.ui.relation.AttentionListActivity
import com.nnbc123.app.ui.relation.FansListActivity

View File

@@ -1,48 +0,0 @@
package com.nnbc123.app.qiyukefu;
import androidx.annotation.Keep;
/**
* @author jack
* @Description @link YSFUserInfo
* @Date 2019/3/18
*/
@Keep
public class CustomerItemInfo {
private String key;//数据项的名称,用于区别不同的数据。
private int index;//用于排序显示数据时数据项按index值升序排列不设定index的数据项将排在后面index相同或未设定的数据项将按照其在 JSON 中出现的顺序排列。
private String label;//该项数据显示的名称。
private String value;//该数据显示的值,类型不做限定,根据实际需要进行设定。
private String href;//超链接地址。若指定该值,则该项数据将显示为超链接样式,点击后跳转到其值所指定的 URL 地址。
private boolean hidden;//是否隐藏该item。目前仅对mobile和email有效。
public CustomerItemInfo(String key) {
this.key = key;
}
public CustomerItemInfo setIndex(int index) {
this.index = index;
return this;
}
public CustomerItemInfo setLabel(String label) {
this.label = label;
return this;
}
public CustomerItemInfo setValue(String value) {
this.value = value;
return this;
}
public CustomerItemInfo setHref(String href) {
this.href = href;
return this;
}
public CustomerItemInfo setHidden(boolean hidden) {
this.hidden = hidden;
return this;
}
}

View File

@@ -1,151 +0,0 @@
package com.nnbc123.app.qiyukefu;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import androidx.annotation.Nullable;
import com.google.gson.Gson;
import com.netease.nim.highavailable.lava.base.http.URIUtils;
import com.nnbc123.app.R;
import com.nnbc123.app.application.XChatApplication;
import com.nnbc123.core.auth.AuthModel;
import com.nnbc123.core.user.bean.UserInfo;
import com.nnbc123.library.utils.SingleToastUtil;
import com.nnbc123.xchat_android_constants.XChatConstants;
import com.qiyukf.unicorn.api.ConsultSource;
import com.qiyukf.unicorn.api.UICustomization;
import com.qiyukf.unicorn.api.Unicorn;
import com.qiyukf.unicorn.api.YSFOptions;
import com.qiyukf.unicorn.api.YSFUserInfo;
import com.qiyukf.unicorn.api.customization.input.ActionPanelOptions;
import com.qiyukf.unicorn.api.customization.input.InputPanelOptions;
import com.qiyukf.unicorn.api.event.EventCallback;
import com.qiyukf.unicorn.api.event.EventProcessFactory;
import com.qiyukf.unicorn.api.event.SDKEvents;
import com.qiyukf.unicorn.api.event.UnicornEventBase;
import com.qiyukf.unicorn.api.event.entry.RequestPermissionEventEntry;
import com.soundcloud.android.crop.UriUtil;
import java.util.ArrayList;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2019/3/18
*/
public class CustomerServerHelper {
public final static String AVATAR_URL = "https://image.zhongjialx.com/new_kficon.png";
private final static String TITLE = "官方客服";
private static boolean isInit = false;
private CustomerServerHelper() {
}
public static void onLoginInfoUpdate(@Nullable UserInfo userInfo) {
if (!isInit)
init(XChatApplication.instance(), userInfo);
if (userInfo != null) {
YSFUserInfo ysfUserInfo = new YSFUserInfo();
ysfUserInfo.userId = AuthModel.get().getCurrentUid() + "";
ysfUserInfo.authToken = null;
List<CustomerItemInfo> userData = new ArrayList<>();
userData.add(new CustomerItemInfo("real_name").setValue(userInfo.getNick()));
userData.add(new CustomerItemInfo("mobile_phone").setValue(userInfo.getPhone()));
userData.add(new CustomerItemInfo("email").setValue(""));
userData.add(new CustomerItemInfo("avatar").setValue(userInfo.getAvatar()));
userData.add(new CustomerItemInfo("nick")
.setLabel("用户昵称:")
.setValue(userInfo.getNick())
.setIndex(0));
userData.add(new CustomerItemInfo("gender")
.setLabel("性别:")
.setValue(userInfo.getGender() == 1 ? "" : "")
.setIndex(1));
userData.add(new CustomerItemInfo("erbanNo")
.setLabel("音萌号:")
.setValue(userInfo.getErbanNo() + "")
.setIndex(2));
userData.add(new CustomerItemInfo("phone")
.setLabel("手机号:")
.setValue(userInfo.getPhone())
.setIndex(3));
userData.add(new CustomerItemInfo("newUser")
.setLabel("是否新用户:")
.setValue(userInfo.isNewUser() ? "" : "")
.setIndex(4));
userData.add(new CustomerItemInfo("uid")
.setLabel("uid")
.setValue("uid:" + userInfo.getUid())
.setIndex(4));
ysfUserInfo.data = new Gson().toJson(userData);
Unicorn.setUserInfo(ysfUserInfo);
}
}
public static void init(Context context, @Nullable UserInfo userInfo) {
if (isInit) {
return;
}
isInit = true;
YSFOptions options = new YSFOptions();
options.uiCustomization = new UICustomization();
options.uiCustomization.priorityWebAvatar = true;
options.uiCustomization.hideKeyboardOnEnterConsult = true;
if (userInfo != null) {
options.uiCustomization.rightAvatar = userInfo.getAvatar();
}
Uri uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"
+ context.getResources().getResourcePackageName(R.mipmap.app_logo) + "/"
+ context.getResources().getResourceTypeName(R.mipmap.app_logo) + "/"
+ context.getResources().getResourceEntryName(R.mipmap.app_logo));
options.uiCustomization.leftAvatar = uri.toString();
options.uiCustomization.titleCenter = true;
options.sdkEvents = new SDKEvents();
options.sdkEvents.eventProcessFactory = new EventProcessFactory() {
@Override
public UnicornEventBase eventOf(int i) {
if (i == 5) {
return new RequestPermissionEvent();
} else {
return null;
}
}
};
// appKey 可以在七鱼管理系统->设置->App 接入 页面找到
Unicorn.init(context, XChatConstants.QI_YU_KF_KEY, options, new GlideImageLoader(context));
Unicorn.initSdk();
}
public static void contactCustomerServer(Context context) {
if (!isInit) {
return;
}
if (!AuthModel.get().isImLogin()) {
SingleToastUtil.showToast("数据加载中,请稍后!");
return;
}
ConsultSource source = new ConsultSource(null, TITLE, null);
Unicorn.openServiceActivity(context, TITLE, source);
}
public static void logout() {
Unicorn.logout();
isInit = false;
}
}

View File

@@ -1,59 +0,0 @@
package com.nnbc123.app.qiyukefu;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.qiyukf.unicorn.api.ImageLoaderListener;
import com.qiyukf.unicorn.api.UnicornImageLoader;
public class GlideImageLoader implements UnicornImageLoader {
private final Context context;
public GlideImageLoader(Context context) {
this.context = context.getApplicationContext();
}
@Override
public Bitmap loadImageSync(String uri, int width, int height) {
return null;
}
@Override
public void loadImage(String uri, int width, int height, final ImageLoaderListener listener) {
if (width <= 0 || height <= 0) {
width = height = Integer.MIN_VALUE;
}
Glide.with(context).asBitmap().load(uri).into(new CustomTarget<Bitmap>(width, height) {
@Override
public void onLoadStarted(@Nullable Drawable placeholder) {
}
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {
}
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
if (listener != null) {
listener.onLoadComplete(resource);
}
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
}
}

View File

@@ -1,133 +0,0 @@
package com.nnbc123.app.qiyukefu
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.provider.Settings
import androidx.fragment.app.FragmentActivity
import com.chuhai.utils.ktx.asActivity
import com.nnbc123.app.R
import com.nnbc123.app.common.permission.PermissionHelper
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog
import com.nnbc123.app.ui.widget.dialog.RequestPermissionPromptDialog
import com.nnbc123.library.utils.ResUtil
import com.qiyukf.unicorn.api.event.EventCallback
import com.qiyukf.unicorn.api.event.UnicornEventBase
import com.qiyukf.unicorn.api.event.entry.RequestPermissionEventEntry
import com.tbruyelle.rxpermissions2.RxPermissions
/**
* Created by Max on 2024/1/4 11:10
* Desc:
**/
class RequestPermissionEvent : UnicornEventBase<RequestPermissionEventEntry> {
override fun onEvent(
p0: RequestPermissionEventEntry?,
p1: Context?,
p2: EventCallback<RequestPermissionEventEntry>?
) {
val tips = getPermissionTips(p0?.scenesType)
val activity = (p1?.asActivity() as? FragmentActivity)
val perms = p0?.permissionList?.toTypedArray()
if (RequestPermissionPromptDialog.isNeedPrompt()
&& tips != null
&& activity != null
&& perms != null
) {
val rxPermissions = RxPermissions(activity)
if (PermissionHelper.isAllGranted(rxPermissions, * perms)) {
p2?.onNotPorcessEvent()
} else {
RequestPermissionPromptDialog(p1, tips).show()
val d = rxPermissions.request(*perms).subscribe({ aBoolean: Boolean? ->
RequestPermissionPromptDialog.dismissCurrentDialog()
if (aBoolean == true) {
p2?.onProcessEventSuccess(p0)
} else {
showDeniedTips(p1, tips)
p2?.onInterceptEvent()
}
}) { obj: Throwable ->
RequestPermissionPromptDialog.dismissCurrentDialog()
obj.printStackTrace()
p2?.onNotPorcessEvent()
}
}
} else {
p2?.onNotPorcessEvent()
}
}
override fun onDenyEvent(p0: Context?, p1: RequestPermissionEventEntry?): Boolean {
if (p0 == null) {
return super.onDenyEvent(p0, p1)
}
val tips = getPermissionTips(p1?.scenesType)
return if (tips != null) {
showDeniedTips(p0, tips)
true
} else {
super.onDenyEvent(p0, p1)
}
}
/**
* 获取场景对应的权限提示信息不需要提示的权限返回null
*/
private fun getPermissionTips(scenesType: Int?): String? {
when (scenesType) {
RequestPermissionEventEntry.SCENES_TAKE_AUDIO -> {
return ResUtil.getString(R.string.permission_denied_tips_mic)
}
RequestPermissionEventEntry.SCENES_TAKE_VIDEO -> {
return StringBuffer().append("1.")
.append(ResUtil.getString(R.string.permission_denied_tips_camera))
.append("\n2.").append(ResUtil.getString(R.string.permission_denied_tips_mic))
.toString()
}
RequestPermissionEventEntry.SCENES_TAKE_PHOTO -> {
return ResUtil.getString(R.string.permission_denied_tips_camera)
}
RequestPermissionEventEntry.SCENES_SELECT_MEDIA,
RequestPermissionEventEntry.SCENES_SAVE_IMAGE,
RequestPermissionEventEntry.SCENES_SAVE_VIDEO,
RequestPermissionEventEntry.SCENES_SELECT_VIDEO,
RequestPermissionEventEntry.SCENES_SELECT_FILE,
RequestPermissionEventEntry.SCENES_SELECT_IMAGE,
RequestPermissionEventEntry.SCENES_VIDEO_CHAT -> {
return ResUtil.getString(R.string.permission_denied_tips_image)
}
else -> {
return null
}
}
}
private fun showDeniedTips(context: Context, message: String) {
CommonTipDialog(context).apply {
setTipMsg(message)
setOkText("去设置")
setOnActionListener(
object : CommonTipDialog.OnActionListener {
override fun onOk() {
//同意跳到应用详情页面
val packageUri =
Uri.parse("package:${context.packageName}")
val intent = Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
packageUri
)
(context as? Activity)?.startActivityForResult(
intent, 0
)
}
}
)
}.show()
}
}