在Android WebView中實現推送通知,需要結合使用WebView和Firebase Cloud Messaging (FCM) 服務。以下是實現步驟:
設置Firebase項目:
google-services.json
文件。google-services.json
文件復制到Android項目的app
目錄下。配置Android項目:
build.gradle
(Module: app)文件中添加Firebase依賴:buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.3.10'
}
}
apply plugin: 'com.google.gms.google-services'
dependencies {
implementation 'com.google.firebase:firebase-messaging:23.0.0'
}
AndroidManifest.xml
文件中添加必要的權限和服務聲明:<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
...
<service
android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<receiver
android:name=".MyFirebaseMessagingReceiver">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</receiver>
</application>
實現FCM服務:
MyFirebaseMessagingService
類來處理消息接收:public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// 處理接收到的消息
if (remoteMessage.getNotification() != null) {
// 顯示通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "default")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("FCM Message")
.setContentText(remoteMessage.getNotification().getBody())
.setAutoCancel(true);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(0, builder.build());
}
}
}
MyFirebaseMessagingReceiver
類來處理錯誤消息:public class MyFirebaseMessagingReceiver extends FirebaseMessagingReceiver {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// 處理錯誤消息
}
}
在WebView中顯示通知:
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.loadUrl("https://your-webview-url.com");
FirebaseMessaging.getInstance().subscribeToTopic("your-topic")
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
// 處理訂閱失敗
}
});
}
@Override
protected void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if (remoteMessage.getNotification() != null) {
// 顯示通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "default")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("FCM Message")
.setContentText(remoteMessage.getNotification().getBody())
.setAutoCancel(true);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(0, builder.build());
}
}
}
通過以上步驟,你可以在Android WebView中實現推送通知功能。當有新消息時,WebView會自動顯示通知。