[英]Flutter VoIP Push notification on Android
我正在尝试为视频应用实现某种推送通知。
在 Flutter 端,我收到 FCM 推送通知,当发生这种情况时,会调用一个函数来处理来自本机端的代码。
onMessage: (Map<String, dynamic> message) async {
print('on resume $message');
await callFromAndroid();
正在调用的 Future 函数是这样的:
Future<void> callFromAndroid() async
{
try {
await platform.invokeMethod('callFromAndroid');
} catch (e) {
print(e);
}
}
在 Android 方面,这是 MainActivity 应该触发 VideoActivity 处理程序...
public class MainActivity extends FlutterActivity {
private static final String CHANNEL = "my.test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(new MethodChannel.MethodCallHandler() {
@Override
public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
if (methodCall.method.equals("callFromAndroid")) {
videoActivityHandler();
}
}
});
}
public void videoActivityHandler() {
Intent intent = new Intent(this, VideoCallActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
getApplicationContext().startActivity(intent);
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// to release screen lock
KeyguardManager keyguardManager = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG");
keyguardLock.disableKeyguard();
}
}
但是,当 FCM 通知到达时,它会出现空活动。 当应用程序在后台或手机被锁定时,它也不起作用。
我完全是移动应用程序开发的初学者,没有 Android Native 开发经验。 我在研究这个主题时发现的所有这些代码......
因此,任何帮助表示赞赏。
我来晚了,但是...
如果您想在应用程序处于后台/终止或什至在前台时接收 FCM 推送,您应该发送没有notification
负载的data
负载。 在这种情况下,您可以在 FCM 的onBackgroundMessage
回调中处理通知。
可能有人会发现它很有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.