chore:移除七鱼客服SDK
This commit is contained in:
@@ -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'
|
||||
}
|
||||
|
||||
|
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
@@ -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");
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@@ -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()
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user