代码之家  ›  专栏  ›  技术社区  ›  Anand Nishad

使用令牌的FCM FireBase

  •  0
  • Anand Nishad  · 技术社区  · 2 年前

    我想使用Firebase FCM生成通知,使用Kotlin中的device令牌发送到特定用户的设备。有人可以帮助我提供代码或任何项目,这样我就可以轻松地实现它吗?

    0 回复  |  直到 2 年前
        1
  •  1
  •   Aditya_Giri    2 年前

    我也做类似的事情

    首先制作改造实例并调用api

     fun getInstance():Retrofit{
            return Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(GsonConverterFactory.create()).build()
        }
    
        fun getApiService(retrofit: Retrofit):RetrofitApi{
            return retrofit.create(RetrofitApi::class.java)
        }
    

    通过这种方式改造实例创建并调用api

    interface RetrofitApi {
    
        @Headers("Authorization:key=${Helper.FCM_SERVER_KEY}","Content-Type: ${Helper.CONTENT_TYPE}")
        @POST("fcm/send")
        suspend fun sendNotification(@Body pushNotification: PushNotification):Response<ResponseBody>
    
    }
    

    在活动中,请在下面调用此

    private fun push(user: User,title:String,message: String) {
            CoroutineScope(Dispatchers.IO).launch {
                val data=mapOf("userName" to user.userName,"title" to title,"message" to message)
    
                val response=Helper.getApiService(Helper.getInstance()).sendNotification(
                    PushNotification(user.token,data, mutableMapOf("priority" to "high"))
                )
    
                withContext(Dispatchers.Main){
                    if(response.isSuccessful){
                        Toast.makeText(this@AddNotificationActivity,"Notification send successfully !",
                            Toast.LENGTH_SHORT).show()
                        finish()
                    }
                    else{
                        Log.e("noti","${response.body()}")
                        Toast.makeText(this@AddNotificationActivity,"Notification not send , something went wrong !",
                            Toast.LENGTH_SHORT).show()
                    }
                }
    
            }
    
        }
     
    

    将服务器密钥替换为自己的密钥,并将Content_Type替换为“application/json”