要在Android WebView中集成FCM(Firebase Cloud Messaging),可以按照以下步骤操作:
添加Firebase到项目中:
google-services.json
文件到你的Android项目的根目录下。build.gradle
文件中添加Firebase依赖:dependencies {
// ...
implementation 'com.google.firebase:firebase-messaging:20.3.0'
}
在AndroidManifest.xml文件中添加必要的权限和服务声明:
创建一个Firebase消息处理服务类(MyFirebaseMessagingService):
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// 处理收到的消息
}
@Override
public void onNewToken(String token) {
// 当新的设备令牌生成或刷新时调用
}
}
在WebView中启用JavaScript和WebView的推送通知:
WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setDatabasePath(getApplicationContext().getFilesDir().getPath() + "/databases");
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient());
webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void sendNotification(String title, String body) {
// 在此处处理从WebView发出的推送通知
}
}, "android");
webView.loadUrl("https://example.com");
在WebView的JavaScript代码中,可以使用以下代码发送推送通知到Android设备:
function sendNotification(title, body) {
if (typeof android !== 'undefined' && typeof android.sendNotification === 'function') {
android.sendNotification(title, body);
}
}
这样,当Firebase云消息服务器发送通知到设备时,MyFirebaseMessagingService会处理并将通知发送到WebView中进行进一步处理。同时,WebView中的JavaScript代码也可以调用sendNotification函数来发送推送通知到设备上。