协同sdk说明


开发准备

<h2>添加jar文件</h2> <p>将IM的jar包复制到工程的libs目录下,如果有老版本jar包在其中,请替换。如图显示: <img src="https://www.showdoc.cc/server/api/attachment/visitfile/sign/cde6a528e9de39f6790a11150763f2a9?showdoc=.jpg" alt="" /></p> <h2>配置AndroidManifest文件</h2> <p>集成IM需要在application标签下注册服务QDIMService,用于和服务端的交互和本地数据处理</p> <pre><code class="language-java"> &lt;service android:name="com.longchat.base.service.QDIMService" /&gt;</code></pre> <p>配置权限</p> <pre><code class="language-java"> &lt;!--用于访问网络,网络定位需要上网--&gt; &lt;uses-permission android:name="android.permission.INTERNET" /&gt; &lt;!--允许程序设置内置sd卡的写权限--&gt; &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt; &lt;uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /&gt; &lt;uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /&gt; &lt;!--允许程序获取网络状态--&gt; &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt; &lt;!--允许程序访问WiFi网络信息--&gt; &lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&gt; &lt;!--允许程序读写手机状态和身份--&gt; &lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&gt; &lt;!--允许程序访问CellID或WiFi热点来获取粗略的位置--&gt; &lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt; &lt;!--用于访问GPS定位--&gt; &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt; &lt;!--用于获取运营商信息,用于支持提供运营商信息相关的接口--&gt; &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt; &lt;!--用于获取wifi的获取权限,wifi信息会用来进行网络定位--&gt; &lt;uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /&gt; &lt;!--用于申请调用A-GPS模块--&gt; &lt;uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /&gt; &lt;!--用于申请获取蓝牙信息进行室内定位--&gt; &lt;uses-permission android:name="android.permission.BLUETOOTH" /&gt; &lt;uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /&gt; &lt;!--相机权限--&gt; &lt;uses-permission android:name="android.permission.CAMERA" /&gt; &lt;uses-permission android:name="android.permission.RECORD_AUDIO" /&gt; &lt;uses-permission android:name="android.permission.VIBRATE" /&gt; &lt;uses-permission android:name="android.permission.WAKE_LOCK" /&gt; &lt;uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /&gt; &lt;uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" /&gt;</code></pre> <p>app下面的build.gradle配置</p> <pre><code class="language-java"> implementation "com.squareup.okhttp3:okhttp:3.12.1" implementation 'com.squareup.okhttp3:logging-interceptor:3.12.1' implementation 'com.squareup.okio:okio:2.2.0' implementation "com.squareup.retrofit2:retrofit:2.5.0" implementation 'com.squareup.retrofit2:converter-gson:2.5.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0' implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'</code></pre> <p>混淆配置</p> <pre><code class="language-java">-keep class com.longchat.base.**{*;} ########okhttp######### -dontwarn okhttp3.** -dontwarn okio.** -dontwarn javax.annotation.** -dontwarn org.conscrypt.** # A resource is loaded with a relative path so the package of this class must be preserved. -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase -dontwarn okio.** # Retain generic type information for use by reflection by converters and adapters. -keepattributes Signature # Retain service method parameters. -keepclassmembernames,allowobfuscation interface * { @retrofit2.http.* &lt;methods&gt;; } # Ignore annotation used for build tooling. -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement # A resource is loaded with a relative path so the package of this class must be preserved. -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. -dontwarn org.codehaus.mojo.animal_sniffer.* ########okhttp#########</code></pre> <p>如果需要集成手机厂商的消息离线推送功能,请自行按照各个厂商的离线推送说明文档进行配置</p> <h2>注意事项</h2> <p>由于Android P(包含更高版本)系统禁止使用所有未加密的连接,所以在使用检索功能(poi检索,路线规划,行政区域检索,地理编码,逆地理编码)会返回error.SEARCH_SERVER_INTERNAL_ERROR。并有如下异常信息:</p> <pre><code> W/System.err: java.io.IOException: Cleartext HTTP traffic to **** not permitted</code></pre> <p>针对该问题有以下三种解决方案如下:</p> <ol> <li>targetSdkVersion 降到27以下;</li> <li>按如下方式更改网络安全配置 2.1)在res文件夹下创建一个xml文件夹,然后创建一个network_security_config.xml文件,文件内容如下: <pre><code class="language-java">&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;network-security-config&gt; &lt;base-config cleartextTrafficPermitted="true" /&gt; &lt;/network-security-config&gt;</code></pre> <p>2.2)在AndroidManifest.xml文件下的application标签增加以下属性:</p> <pre><code class="language-java">&lt;application ... android:networkSecurityConfig="@xml/network_security_config" ... /&gt;</code></pre></li> </ol> <p>Android 10 改变了文件的存储方式 可以在Androidmainfest 里面的application添加 android:requestLegacyExternalStorage=&quot;true&quot; <img src="https://upload-images.jianshu.io/upload_images/7272532-15509655b9766dfd.png" alt="" /></p> <pre><code class="language-mindmap"># QDClient ## QDFriendManager ## QDGroupManager ## QDFileManger ## QDSelfManager ## QDWorkManager ## QDCloudManger ## QDAccManager ## QDSignManger</code></pre> <ul> <li>QDClient: SDK 的入口,主要完成初始化、消息创建、发送等功能。也是获取其他模块的入口。</li> <li>QDFriendManager: 好友相关的接口</li> <li>QDGroupManager: 群组相关的接口</li> <li>QDFileManger: 文件相关的接口</li> <li>QDSelfManger: 登陆者相关的接口</li> <li>QDWorkManager: 应用相关的接口</li> <li>QDCloudManger: 云盘相关的接口</li> <li>QDAccManager: 公众号相关的接口</li> <li>QDSignManager: 外勤签到相关的接口</li> </ul>

页面列表

ITEM_HTML