サードパーティ製コンポーネントを統合


背景は最近ショッピングモールのAPPをして、中はカスタマーサービスのコンサルティングの机能を使う必要があって、すぐにネット上でどんな支持のSDKがあることを探して、环信、融云、网易の7鱼など、このいくつかのSDKのドキュメントをめくって、やはり网易の最も友好的で、その上クライアントのUIは最も美しくて気持ちがいいことを発见して、だからそれを选びました!社長が言ったように、価格は考えなくてもいいです.
開発ガイドのアドレス:http://qiyukf.com/newdoc/html/Android_SDK_Guide.html分からないことがあればできるだけドキュメントを见て解决することができて、7鱼の技术の客服の人に相谈することができることを知らないで、サービスの态度はとても良いです.
私が出会った坑一、集積後、カスタマーサービスの窓口を開けて、画像を選択して表示できません;理由は七魚の中で画像を読み取るのにAsyncTaskを使って画像を読み取るためで、私のAPPのトップページの輪播図機能もAsyncTaskを使って、七魚のAsyncTaskがブロックして、画像を読み取ることができなくて、だから輪播図のAsyncTaskをTimerを使って取って代わって問題を解決しました.AsyncTaskは短いタスクしか実行できません.長時間かかるタスクを実行すると、AsyncTaskを使用する他のタスクがブロックされます.
二、統合後、新しいニュースがあり、AndroidバージョンにはNotificationが表示され、カスタマーサービスページにアクセスできない部分をクリックします.この部分の七魚SDKは開発者がページをより柔軟に操作するために、対応するAPIを提供していません.これは私たち自身が方法を考えて実現する必要があります.1.私のMyApplicationコードは以下の通りです.ここに新しいsetServiceEntranceActivityの方法が追加されました.これはアプリが現在どのページにあるかを実現するためです.クリックした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());
        }
    }

アドバイスがわからずに聞く.