要在Android推送通知中显示发送时间而不是接收时间,可以通过设置通知的内容来实现。以下是一个示例代码,演示如何在Android中使用Firebase Cloud Messaging(FCM)发送通知并在通知中显示发送时间:
build.gradle
文件中添加以下依赖项:implementation 'com.google.firebase:firebase-messaging:22.0.0'
FirebaseMessagingService
的类,并实现onMessageReceived
方法。在该方法中处理接收到的消息,并显示通知。public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
// 获取消息的发送时间
long sentTimeMillis = remoteMessage.getSentTime();
// 格式化发送时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
String sentTime = sdf.format(new Date(sentTimeMillis));
// 获取通知的标题和内容
String title = remoteMessage.getNotification().getTitle();
String body = remoteMessage.getNotification().getBody();
// 创建通知的构建器
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "channel_id")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.setWhen(sentTimeMillis) // 设置通知的发送时间
.setShowWhen(true); // 显示发送时间
// 显示通知
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(0, builder.build());
}
}
MyFirebaseMessagingService
类。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 订阅Firebase消息服务
FirebaseMessaging.getInstance().subscribeToTopic("news");
}
}
通过这个示例代码,你可以在Android推送通知中显示发送时间而不是接收时间。请注意,这里使用了Firebase Cloud Messaging(FCM)来发送通知,因此你需要设置Firebase项目并获取google-services.json
文件。另外,你还需要在AndroidManifest.xml文件中添加通知的渠道信息,以及在通知中使用的图标和资源文件。