Отправить push-уведомление через Firebase с устройства AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Отправить push-уведомление через Firebase с устройства Android

Сообщение Anonymous »

Мне интересно отправить push-уведомление через Firebase из приложения Android.
В документации Firebase указано, что полезная нагрузка в формате json должна быть отправлена ​​на https://fcm.googleapis.com/fcm/send
Итак, я использую Retrofit для отправки json, но запрос не выполняется, и если я отправляю запрос без Retrofit, он работает идеально.
В чем разница между реализациями tow и почему это не работает с Retrofit.
Вот две реализации и ошибка при использовании Retrofit.
val notificationBody = NotificationBody(notificationData, "/topics/all")
val rb = Gson().toJson(notificationBody).toRequestBody("application/json".toMediaTypeOrNull())
val responeNoti = RetrofitManager.notificationServiceApi.postNotification(rb)
responeNoti.enqueue(object : Callback{
override fun onFailure(call: Call, t: Throwable) {
Log.d(TAG, t.message)
}

override fun onResponse(call: Call, response: Response) {
Log.d(TAG, response.toString())
}

})

NotificationServiceApi
private const val FCM_URL = "https://fcm.googleapis.com/fcm/"
val notificationServiceApi: ServiceApi by lazy{
val interceptor = HttpLoggingInterceptor()
interceptor.level = HttpLoggingInterceptor.Level.BODY
val okHttpClientBuilder = OkHttpClient.Builder()
okHttpClientBuilder.addInterceptor(object : Interceptor{
override fun intercept(chain: Interceptor.Chain): okhttp3.Response {
val request: Request = chain.request().newBuilder().
addHeader("Content-Type", "application/json").
addHeader("Authorization","key=*my firebase key*").build()

return chain.proceed(request)
}
}).addInterceptor(interceptor)

val notificationRetrofit = Retrofit.Builder()
.client(okHttpClientBuilder.build())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(FCM_URL)
.build()
notificationRetrofit.create(ServiceApi::class.java)
}

ServiceApi
@POST("send/")
fun postNotification(@Body notificationBody: RequestBody) : Call

Журнал HTTP
2020-09-06 00:12:27.991 32059-32244/com.bagi.soreknetmanager I/okhttp.OkHttpClient: --> POST
https://fcm.googleapis.com/fcm/send/
2020-09-06 00:12:27.991 32059-32244/com.bagi.soreknetmanager I/okhttp.OkHttpClient: Content-
Length: 117
2020-09-06 00:12:27.991 32059-32244/com.bagi.soreknetmanager I/okhttp.OkHttpClient: Content-Type: application/json
2020-09-06 00:12:27.991 32059-32244/com.bagi.soreknetmanager I/okhttp.OkHttpClient: Authorization: key=my firebase key
2020-09-06 00:12:27.991 32059-32244/com.bagi.soreknetmanager I/okhttp.OkHttpClient: {"data":{"imageUrl":"Изображение content","title":"my title"},"to":"/topics/all"}
2020-09-06 00:12:27.991 32059-32244/com.bagi.soreknetmanager I/okhttp.OkHttpClient: --> END POST (117-byte body)
2020-09-06 00:12:29.198 32059-32244/com.bagi.soreknetmanager I/okhttp.OkHttpClient:

Подробнее здесь: https://stackoverflow.com/questions/637 ... oid-device
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»