开发前准备
简介
如下是企业自建应用获取应用信息的操作流程。
提交应用信息
注册到橙讯
1.
2.
gradle文件引入 aar。如下:
api = CXAPIFactory.createCXAPI(this, AppKey);
api.registerApp(AppKey);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
api.registerApp(AppKey);
}
}, new IntentFilter(ConstantsAPI.ACTION_REFRESH_CXAPP));
步骤如下:
1.
CXEntryActivity
类,该类继承自 CXBaseEntryActivity
,放置位置为 包名 + .cxapi
下。如下图:(包名:
cn.com.westone.cxjr.a3rdapp
)2.
manifest
文件里面加上exported、taskAffinity
及launchMode
属性,其中
exported
设置为true
,taskAffinity
设置为你的包名,launchMode
设置为singleTask
。 <activity android:name="{packagename}.cxapi.CXEntryActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="true"
android:taskAffinity="{packagename}"
android:launchMode="singleTask" (后期考虑去掉)
/>
3.
CXEntryActivity
功能示例代码如下 (展示从聊天窗口点击分享卡片的处理逻辑):
public class CXEntryActivity extends CXBaseEntryActivity {
private static final String TAG = "CXEntryActivity";
private static final String APPKEY = "申请到的appkey";
private ICXAPI api;
@Override
protected void createCXAPI() {
api = CXAPIFactory.createCXAPI(this, APPKEY);
}
@Override
public void onReq(BaseReq req) {
switch (req.getType()) {
case COMMAND_SHOW_MESSAGE_FROM_CX: {
//处理点击分享卡片的逻辑
ShowMessage.Req showMessageReq = (ShowMessage.Req) req;
//todo
//待处理完成后需要发送Response通知橙讯处理结果
ShowMessage.Resp showMessageResp = new ShowMessage.Resp();
showMessageResp.transaction = req.transaction; //必须保持和Req一致
showMessageResp.errorCode = BaseResp.ErrCode.ERR_OK;
api.sendResp(showMessageResp);
}
break;
}
}
}
接口调用
ICXAPI
的 sendReq
和 sendResp
两个方法来实现。boolean sendReq(BaseReq req, ICXAPI.IResponseListener listener);
sendReq
是第三方 app 主动发送消息给橙讯。SendAuth.Req req = new SendAuth.Req();
req.appKey = "app key";
req.enterpriseId = "enterprise id";
api.sendReq(req, new ICXAPI.IResponseListener<SendAuth.Resp>() {
@Override
public void onResponse(SendAuth.Resp resp) {
if(resp.errorCode == BaseResp.ErrCode.ERR_OK) {
//todo request accesstoken from server by oauthcode
}else {
//todo handle error
}
}
});
boolean sendResp(BaseResp resp);
sendResp
是当CXEntryActivity
收到请求时,待处理完业务后,需要通知橙讯处理结果。ShowMessage.Req showMessageReq = (ShowMessage.Req) req;
//待处理完成后需要发送Response通知橙讯处理结果
ShowMessage.Resp showMessageResp = new ShowMessage.Resp();
showMessageResp.transaction = req.transaction; //必须保持和Req一致
showMessageResp.errorCode = BaseResp.ErrCode.ERR_OK;
api.sendResp(showMessageResp);
修改于 2024-09-18 08:52:40