问题描述
我正在尝试为我的应用创建通话功能。它使用Cloud Messaging来管理请求。
我创建了两个活动1.IncomingCall 2.OutgoingCall。 当发送方呼叫接收方时,incomingCall活动弹出(到接收方)。呼出时发给发件人。
我设法向接收者发送了一个请求,活动如期弹出。 但是,当接收方拒绝/接受呼叫时,发送方的设备不会通过通过broadcastReceiver接收请求来退出呼叫。但是,当发送方断开连接时,接收方的设备会收到请求,然后退出活动。
CloudMessagingService的onMessageReceived
public class CloudMessagingService extends FirebaseMessagingService {
.
.
.
.
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
String type = remoteMessage.getData().get(Constants.MSG_TYPE);
...
if(type.equals(Constants.MSG_INVITATION_RESPONSE)){
Intent intent = new Intent(Constants.MSG_INVITATION_RESPONSE);
intent.putExtra(Constants.MSG_INVITATION_RESPONSE,remoteMessage.getData().get(Constants.MSG_INVITATION_RESPONSE));
LocalbroadcastManager.getInstance(getApplicationContext()).sendbroadcast(intent);
}
}
}
IncomingCall
private void sendResponse(String type,String receiverToken){
try {
JSONArray tokens = new JSONArray();
tokens.put(receiverToken);
JSONObject body = new JSONObject();
JSONObject data = new JSONObject();
data.put(Constants.MSG_TYPE,Constants.MSG_INVITATION_RESPONSE);
data.put(Constants.MSG_INVITATION_RESPONSE,type);
body.put(Constants.MSG_DATA,data);
body.put(Constants.MSG_REG_IDS,tokens);
sendRemoteMessage(body.toString(),type);
}
catch (Exception e){
Toast.makeText(getApplicationContext(),"Error:"+e.getMessage(),Toast.LENGTH_SHORT).show();
Log.d("FCM",e.getMessage()+"__FCM");
finish();
}
}
sendRemoteMessage()
用于拒绝并接受呼叫按钮的onClickListener
OutgoingCall的broadcastReceiver 我想这是问题开始的地方 它不会生成日志。
private broadcastReceiver callResponseReceiver = new broadcastReceiver() {
@Override
public void onReceive(Context context,Intent intent) {
String type = intent.getStringExtra(Constants.MSG_INVITATION_RESPONSE);
Log.d("FCM",type+"__FCM");
if (type != null){
Log.d("FCM",type+"__FCM");
if(type.equals(Constants.MSG_INVITATION_ACCEPTED)){
Toast.makeText(getApplicationContext(),"Call Accepted!",Toast.LENGTH_SHORT).show();
}
else if(type.equals(Constants.MSG_INVITATION_REJECTED)){
Toast.makeText(getApplicationContext(),"Call Rejected!",Toast.LENGTH_SHORT).show();
finish();
}
}
}
};
请注意,我已经在活动的onStart()中注册了broadcastReceiver
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)