美文网首页
集成七鱼客服

集成七鱼客服

作者: 我想吃碗牛肉面 | 来源:发表于2017-08-10 17:56 被阅读693次

    背景
    最近做商城APP,里面需要用到客服咨询的功能,马上到网上找看有什么支持的SDK,环信、融云、网易七鱼等等,翻看了这几家的SDK文档,发现还是网易的最为友好,而且客户端的UI最为美观舒服,所以就选定它了!老板说了,价格不用考虑。

    开发指南
    地址:http://qiyukf.com/newdoc/html/Android_SDK_Guide.html
    如有不懂的尽量看文档可以解决,是在不懂可以咨询七鱼的技术客服人员,服务态度非常好。

    我遇到的坑
    一、集成后,打开客服窗口,选择图片无法显示出来;
    原因是七鱼里读取图片使用了AsyncTask读取图片,而我APP首页轮播图功能也使用了AsyncTask,导致七鱼AsyncTask阻塞,无法读取图片,所以将轮播图的AsyncTask使用Timer替代就解决问题了。AsyncTask只能执行简短任务,执行长时间耗时任务会阻塞其他使用AsyncTask的任务。

    二、集成后,有新消息,Android版本会显示个Notification,点击无法进入客服页面
    这部分七鱼SDK为了开发者能更加灵活操作页面,并没有提供相应的API,这需要我们自己想办法实现。
    1.我的MyApplication代码如下,可以看到这里新添加了个setServiceEntranceActivity的方法,这是为了实现APP目前在哪个页面,点击的Notification后也可以进入该页面

    public class MyApplication extends Application {
    
        private StatusBarNotificationConfig mStatusBarNotificationConfig;
    
        public void onCreate() {
            super.onCreate();
    
            mStatusBarNotificationConfig=new StatusBarNotificationConfig();
            mStatusBarNotificationConfig.notificationEntrance= HomeActivity.class;
    
            if (Unicorn.init(this, Config.QY_APP_KEY, options(), new UILImageLoader())) {
                LogUtil.showLog("init qiyu sdk success!");
            }else {
                LogUtil.showLog("init qiyu sdk error!");
            }
    
            if (inMainProcess(this)) {
                ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(this));
            }else {
                LogUtil.showLog("not inMainProcess");
            }
        }
    
        // 如果返回值为null,则全部使用默认参数。
        private YSFOptions options() {
            YSFOptions options = new YSFOptions();
            options.statusBarNotificationConfig = mStatusBarNotificationConfig;
            options.statusBarNotificationConfig.vibrate=false;
            options.savePowerConfig = new SavePowerConfig();
            return options;
        }
    
        public static boolean inMainProcess(Context context) {
            String packageName = context.getPackageName();
            String processName = SystemUtil.getProcessName(context);
            return packageName.equals(processName);
        }
    
        /**
         * 设置点击Notification消息后进入的页面
         * @param activity
         */
        public void setServiceEntranceActivity(Class<? extends Activity> activity){
            mStatusBarNotificationConfig.notificationEntrance=activity;
        }
    
    }
    

    然后你在你的基础BaseActivity的onCreate()里加入以下代码即可:

    ((MyApplication)getApplication()).setServiceEntranceActivity(getClass());
    

    2.实现点击Notification后,打开客服窗口的功能;
    在基础BaseActivity的onCreate()里加入:

    //七鱼客服
    parseIntent();
    

    在基础BaseActivity复写:

        @Override
        protected void onNewIntent(Intent intent) {
            setIntent(intent);
            parseIntent();
        }
        
        /**
         * 七鱼需要
         */
        private void parseIntent() {
            Intent intent = getIntent();
            if (intent.hasExtra(NimIntent.EXTRA_NOTIFY_CONTENT)) {
                openService("",""); //打开客服窗口的方法
                // 最好将intent清掉,以免从堆栈恢复时又打开客服窗口
                setIntent(new Intent());
            }
        }
    

    不懂建议来问。

    相关文章

      网友评论

          本文标题:集成七鱼客服

          本文链接:https://www.haomeiwen.com/subject/dazhrxtx.html