当前位置: 首页 > news >正文

该网站正在紧急升级维护中iis如何用ip地址做域名访问网站

该网站正在紧急升级维护中,iis如何用ip地址做域名访问网站,黑马程序员怎么样,常见的网站首页布局有哪几种本文将详细介绍如何在Android应用中实现通知功能,包括基础通知、动作按钮和内联回复等高级特性。 一、基础通知实现 1. 基本通知发送方法 fun sendBasicNotification(context: Context, title: String, message: String) {// 1. 创建通知渠道(Android 8.0必需)va…

本文将详细介绍如何在Android应用中实现通知功能,包括基础通知、动作按钮和内联回复等高级特性。

一、基础通知实现

1. 基本通知发送方法

fun sendBasicNotification(context: Context, title: String, message: String) {// 1. 创建通知渠道(Android 8.0+必需)val channelId = "default_channel"val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManagerif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {val channel = NotificationChannel(channelId,"默认通知",NotificationManager.IMPORTANCE_DEFAULT).apply {description = "普通优先级通知"}notificationManager.createNotificationChannel(channel)}// 2. 创建点击Intentval intent = Intent(context, MainActivity::class.java).apply {flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK}val pendingIntent = PendingIntent.getActivity(context,0,intent,PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)// 3. 构建并发送通知val notification = NotificationCompat.Builder(context, channelId).setSmallIcon(R.drawable.ic_notification).setContentTitle(title).setContentText(message).setPriority(NotificationCompat.PRIORITY_DEFAULT).setContentIntent(pendingIntent).setAutoCancel(true).build()notificationManager.notify(System.currentTimeMillis().toInt(), notification)
}

2. 检查并请求通知权限(Android 13+)

fun checkAndRequestNotificationPermission(activity: Activity) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {when {ContextCompat.checkSelfPermission(activity,Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED -> {// 已有权限}activity.shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS) -> {// 解释为什么需要权限showPermissionRationaleDialog(activity)}else -> {// 直接请求权限ActivityCompat.requestPermissions(activity,arrayOf(Manifest.permission.POST_NOTIFICATIONS),REQUEST_CODE_NOTIFICATION_PERMISSION)}}}
}

二、带动作按钮的通知

1. 完整实现代码

fun sendNotificationWithActions(context: Context,title: String,message: String,notificationId: Int = System.currentTimeMillis().toInt()
) {// 1. 创建通知渠道val channelId = "actions_channel"val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManagerif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {val channel = NotificationChannel(channelId,"交互通知",NotificationManager.IMPORTANCE_HIGH).apply {description = "包含操作按钮的通知"enableVibration(true)vibrationPattern = longArrayOf(0, 100, 200, 300)}notificationManager.createNotificationChannel(channel)}// 2. 创建主内容Intentval mainIntent = Intent(context, MainActivity::class.java).apply {flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASKputExtra("notification_id", notificationId)}val mainPendingIntent = PendingIntent.getActivity(context,0,mainIntent,PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)// 3. 创建动作按钮val actions = listOf(createNotificationAction(context,"ACTION_REPLY","回复",R.drawable.ic_reply,1,notificationId),createNotificationAction(context,"ACTION_ARCHIVE","归档",R.drawable.ic_archive,2,notificationId))// 4. 构建通知val notification = NotificationCompat.Builder(context, channelId).setSmallIcon(R.drawable.ic_notification).setContentTitle(title).setContentText(message).setPriority(NotificationCompat.PRIORITY_HIGH).setContentIntent(mainPendingIntent).setAutoCancel(true).apply {actions.forEach { addAction(it) }}.build()// 5. 发送通知notificationManager.notify(notificationId, notification)
}private fun createNotificationAction(context: Context,action: String,title: String,iconRes: Int,requestCode: Int,notificationId: Int
): NotificationCompat.Action {val intent = Intent(context, NotificationActionReceiver::class.java).apply {this.action = actionputExtra("notification_id", notificationId)}val pendingIntent = PendingIntent.getBroadcast(context,requestCode,intent,PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)return NotificationCompat.Action.Builder(iconRes, title, pendingIntent).build()
}

2. 广播接收器实现

class NotificationActionReceiver : BroadcastReceiver() {override fun onReceive(context: Context, intent: Intent?) {val notificationId = intent?.getIntExtra("notification_id", -1) ?: returnwhen(intent.action) {"ACTION_REPLY" -> handleReplyAction(context, notificationId)"ACTION_ARCHIVE" -> handleArchiveAction(context, notificationId)// 添加更多动作处理...}}private fun handleReplyAction(context: Context, notificationId: Int) {// 启动回复Activityval intent = Intent(context, ReplyActivity::class.java).apply {flags = Intent.FLAG_ACTIVITY_NEW_TASKputExtra("notification_id", notificationId)}context.startActivity(intent)}private fun handleArchiveAction(context: Context, notificationId: Int) {// 取消通知val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManagernotificationManager.cancel(notificationId)// 显示归档成功提示Toast.makeText(context, "通知已归档", Toast.LENGTH_SHORT).show()// 这里可以添加实际归档逻辑...}
}

三、高级功能实现

1. 内联回复功能

fun sendNotificationWithInlineReply(context: Context,title: String,message: String,conversationId: Int
) {// ...前面的渠道创建等代码与之前相同...// 1. 创建远程输入val remoteInput = RemoteInput.Builder("key_text_reply").setLabel("输入回复内容").build()// 2. 创建回复动作val replyIntent = Intent(context, NotificationActionReceiver::class.java).apply {action = "ACTION_REPLY"putExtra("conversation_id", conversationId)}val replyPendingIntent = PendingIntent.getBroadcast(context,conversationId,replyIntent,PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE)val replyAction = NotificationCompat.Action.Builder(R.drawable.ic_reply,"回复",replyPendingIntent).addRemoteInput(remoteInput).build()// 3. 构建消息样式通知val messagingStyle = NotificationCompat.MessagingStyle("Me").addMessage(message, System.currentTimeMillis(), null)// 4. 构建完整通知val notification = NotificationCompat.Builder(context, channelId).setSmallIcon(R.drawable.ic_notification).setStyle(messagingStyle).addAction(replyAction).build()// 5. 发送通知notificationManager.notify(conversationId, notification)
}

2. 处理内联回复

private fun handleInlineReply(intent: Intent) {val remoteInput = RemoteInput.getResultsFromIntent(intent)val replyText = remoteInput?.getCharSequence("key_text_reply")replyText?.let {val conversationId = intent.getIntExtra("conversation_id", -1)// 处理回复文本,如保存到数据库saveReplyToDatabase(conversationId, it.toString())// 更新通知显示已回复updateNotificationAsReplied(conversationId)}
}

四、最佳实践与优化建议

  1. 通知分组

    .setGroup("messages_group")
    .setGroupSummary(true)
    
  2. 大图标和样式

    .setLargeIcon(bitmap)
    .setStyle(NotificationCompat.BigTextStyle().bigText(longText))
    
  3. 通知重要性分级

    • IMPORTANCE_MIN:只在通知栏显示,无声音或提示
    • IMPORTANCE_LOW:显示并可能发出声音
    • IMPORTANCE_DEFAULT:显示并发出声音
    • IMPORTANCE_HIGH:显示为弹出式通知
  4. 适配不同厂商

    // 针对小米设备
    if (Build.MANUFACTURER.equals("xiaomi", ignoreCase = true)) {builder.setPriority(NotificationCompat.PRIORITY_MAX)
    }
    
  5. 测试建议

    • 测试不同Android版本的表现
    • 测试应用处于前台和后台时的行为
    • 测试设备锁定状态下的显示

五、常见问题解决方案

  1. 通知不显示

    • 检查Android 13+的通知权限
    • 验证通知渠道重要性设置
    • 确保提供了有效的小图标
  2. 动作按钮不工作

    • 检查PendingIntent的flag设置
    • 验证广播接收器是否正确注册
    • 确保没有重复使用相同的requestCode
  3. 内联回复问题

    • 使用FLAG_MUTABLE创建PendingIntent
    • 确保RemoteInput的key与处理时一致
    • 为Android 12+添加适当的PendingIntent flag

通过本文介绍的方法,您可以实现从基础到高级的各种通知功能,为用户提供丰富的交互体验。记得根据您的应用具体需求进行调整和优化。

http://www.dtcms.com/a/518134.html

相关文章:

  • 如何设计制作企业网站小城镇建设的网站
  • 衡水市网站建设公司wordpress seo模块
  • 福建省法冶建设知识有奖网站上海服装外贸公司排名
  • dw做网站的导航栏怎么做淘宝客自建网站做还是用微信qq做
  • 网站的优势与不足企业网站建设的原则是
  • 建设施工合同网站品牌企业建站
  • 泉州网站制作运营商专业网站构架图
  • 制作网站软件app罗平县建设局网站
  • 做问卷用哪个网站网站设计哪家更好
  • 杭州做网站套餐门户网站的好处
  • 网站开发运营维护方案建议网站建设的一些名词
  • 珠海 网站建设和推广荆州网站建设兼职
  • 网站建设与网页设计...app和网站开发
  • 请人做装修设计上什么网站南京做网站需要多少钱
  • 微信公众号做微网站郑州外贸网站建设公司价格
  • 2014最新网站模板-网页模板免费下载-风格吧给手机开发网站
  • 网站评论设计台州市城市建设投资公司网站
  • 怎么知道网站的域名信阳百度推广公司
  • 推进门户网站建设大连建设工程信息网改名为什么
  • 如何提高用户和网站的互动性网站建设 上海
  • 奖励网站代码高密做网站哪家强价位
  • 泰州网站模板智慧校园平台
  • 静态网站 apache小程序制作代码编写
  • 手机网站禁止缩放网站应具有的功能模块
  • 蚌埠网站优化为客户网站做产品描述
  • 网站地图那么建设html做的网站怎么弄
  • 做网站app要注册哪类商标盐城做网站的公司地址
  • 北京网站平台建设公司网络维护合同模板
  • 网页设计制作网站教程网站开发的调研
  • 企业站seo点击软件创建免费网站需要什么条件