Currently, I have different ways to handle notifications depending on if the system is Android or IOS, for Android, I send a data-only notification and create a local notification from it.
For IOS, since data-only notifications have no guarantee that they will be retrieved if the app is closed, I send a normal notification.
What I'm trying to do is having both notifications using the same FCM API call, here is my current json:
{
"data": {
"click_action": "FLUTTER_NOTIFICATION_CLICK",
"d": "my_data",
},
"apns": {
"headers": {
"apns-priority": "10"
},
"payload": {
"aps": {
"alert": {
"title": "my title",
"body": "my body"
}
}
}
},
"priority": "high",
"registration_ids": [...],
"time_to_live":86400
}
So, what I expected from this request is that for android it would create a data only notification using:
{
"data": {
"click_action": "FLUTTER_NOTIFICATION_CLICK",
"d": "my_data",
}
}
And for IOS, it would create a normal notification using:
{
"notification": {
"title": "my title",
"body": "my body",
}
}
This works for Android, but I don't receive this notification as a normal notification on IOS.. Shouldn't the apns payload be used for IOS in this case?
Related
I've been developing a Teams Custom App with the TeamsFx SDK. I want to send a activity feed notification with a query.
I tried the HTTP request as below, however the app wasn't able to recieve a query(hoge=123).
POST https://graph.microsoft.com/v1.0/users/{user id}/teamwork/sendActivityNotification
Content-Type: application/json
{
"topic": {
"source": "entityUrl",
"value": "https://graph.microsoft.com/v1.0/users/{user id}/teamwork/installedApps/{installation id}?hoge=123"
},
"activityType": "taskCreated",
"previewText": {
"content": "New Task Created"
},
"templateParameters": [
{
"name": "taskId",
"value": "Task 12322"
}
]
}
Is there any wat to send a activity feed notification with a query?
I would like to know how to send iOS push notifications throught AWS Pinpoint with the GCMMessage channel.
Can anyone provide a working json payload that gets sent through FCM to an iOS device ?
It seems that the same payload for Android is used with iOS, but for sending data messages I had to add the property "content_available": "1"
payload = {
"notification": {
"title": "title",
"body": "body",
"sound": "default",
"badge":"1"
},
"content_available": "1",
"data": {
"key_1": "some value",
"key_2": "some value"
}
}
I'm using Google StreetView Publish API to connect photos in a virtual tour and to some external photos on Google StreetView such as a road.
This is the API I use:
https://developers.google.com/streetview/publish/reference/rest/v1/photo/update
And this is the body of the request:
{
"pose": {
"heading": 26,
"latLngPair": {
"latitude": 47.707604844777,
"longitude": -124.41849471719
}
},
"places": [
{
"place_id": "ChIJvcvraDvfjVQR45a-VRk0lGs"
}
],
"connections": [
{
"target": {
"id": "CAoSLEFGMVFpcE5fWGtUZTFWV3dxRm9tOEFlRHVmYVdvTmdDR2NueVZ0dzhid0ZX"
}
},
{
"target": {
"id": "rQfq6hLfyFVfC0V43rrWDw"
}
}
],
"captureTime": {
"seconds": "1653027016"
}
}
But I'm getting this error message when I'm trying to add external panorama ID ({"target":{"id": "rQfq6hLfyFVfC0V43rrWDw"}} to the connections array.
{
"error": {
"code": 400,
"message": "The request includes at least one invalid\/malformed connection photo id.",
"status": "INVALID_ARGUMENT",
"details": [
{
"#type": "type.googleapis.com\/google.rpc.ErrorInfo",
"metadata": {
"EXTERNAL_MESSAGE": "The request includes at least one invalid\/malformed connection photo id."
}
}
]
}
}
Does Google let to connect your panoramas to the Google StreetViews panoramas such as street photos, etc? Or what I was doing wrong? Thank you in advance
You can not link your panoramas directly to Google Street View panoramas.
For a while, Google connected the tours automatically, if they were in a certain range. They stopped doing this and undid those connections, so at the moment both exist side by side on the same map.
I have already viewed this question
I followed the procedure, first called acquire then start then stop
I followed the procedure , first called acquire then start then stop
Here is my acquire call
https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/acquire
Request body
{
"cname": "{{AccessChannel}}",
"uid": "{{RecordingUID}}",
"clientRequest":{
}
}
The response
{
"resourceId": "nUwUbQf9Zg6tsgtLslGnDg0lk8RYaUE09pqOuSIgwfzZ8g-RNe4wP9vsFnBhU785sHbxN0_dI8MVBqLWrCy7TCUo4U3XXne-2hA7expaSg-NgpZ5PcnFK-IrNSvmFNJqL4PGS9hw2q7lDYEtJH_0VgBG4Qdsg2TofWuF2DW7IMAt8NYBp9Hh_06d1K3pIcMJFPUWvfV7fInPDrecYuDmZdiRS9AYydjQlHa6jb51S0sKXzTVYELCJZAXP-ALS_whAh_ojFeltKLKzOC9iYodyAAwq4QnclbL3LKvBeVtCEfS9WjyYzyHDhCngJ-JrIwW"
}
Then I call start
URL : https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid/{{resourceId}}/mode/mix/start
Body:
{
"cname":"{{AccessChannel}}",
"uid":"{{RecordingUID}}",
"clientRequest":{
"recordingConfig":{
"maxIdleTime":300,
"streamTypes":2,
"channelType":1,
"videoStreamType":0,
"transcodingConfig":{
"height":640,
"width":360,
"bitrate":500,
"fps":15,
"mixedVideoLayout":1,
"backgroundColor":"#FF0000"
},
"subscribeVideoUids":[
"123",
"456"
],
"subscribeAudioUids":[
"123",
"456"
],
"subscribeUidGroup":0
},
"storageConfig":{
"vendor":1,
"region":0,
"bucket":"{{Bucket}}",
"accessKey":"{{AccessKey}}",
"secretKey":"{{SecretKey}}",
"fileNamePrefix":[
"directory1",
"directory2"
]
},
"recordingFileConfig":{
"avFileType":[
"hls"
]
}
}
}
Response
{
"resourceId": "nUwUbQf9Zg6tsgtLslGnDg0lk8RYaUE09pqOuSIgwfzZ8g-RNe4wP9vsFnBhU785sHbxN0_dI8MVBqLWrCy7TCUo4U3XXne-2hA7expaSg-NgpZ5PcnFK-IrNSvmFNJqL4PGS9hw2q7lDYEtJH_0VgBG4Qdsg2TofWuF2DW7IMAt8NYBp9Hh_06d1K3pIcMJFPUWvfV7fInPDrecYuDmZdiRS9AYydjQlHa6jb51S0sKXzTVYELCJZAXP-ALS_whAh_ojFeltKLKzOC9iYodyAAwq4QnclbL3LKvBeVtCEfS9WjyYzyHDhCngJ-JrIwW",
"sid": "6068aec4fd4fc47b623bceaf1f2c8f6b"
}
And finally I called stop
URL: https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid/{{resourceId}}/sid/{{sid}}/mode/mix/stop
Body:
{
"cname": "{{AccessChannel}}",
"uid": "{{RecordingUID}}",
"clientRequest": {}
}
And the response is
{
"resourceId": "nUwUbQf9Zg6tsgtLslGnDg0lk8RYaUE09pqOuSIgwfzZ8g-RNe4wP9vsFnBhU785sHbxN0_dI8MVBqLWrCy7TCUo4U3XXne-2hA7expaSg-NgpZ5PcnFK-IrNSvmFNJqL4PGS9hw2q7lDYEtJH_0VgBG4Qdsg2TofWuF2DW7IMAt8NYBp9Hh_06d1K3pIcMJFPUWvfV7fInPDrecYuDmZdiRS9AYydjQlHa6jb51S0sKXzTVYELCJZAXP-ALS_whAh_ojFeltKLKzOC9iYodyAAwq4QnclbL3LKvBeVtCEfS9WjyYzyHDhCngJ-JrIwW",
"sid": "6068aec4fd4fc47b623bceaf1f2c8f6b",
"code": 435
}
I am not sure what did I do wrong ?
My streaming is running on a android device , only one broadcaster no audience
And I called the API from postman
I have double checked every parameter
Please make sure you are passing the authentication token in the request body of start API.
Here is sample
{
"cname":"{{AccessChannel}}",
"uid":"{{RecordingUID}}",
"clientRequest":{
"token": "<place token here>",
"recordingConfig":{
"maxIdleTime":300,
"streamTypes":2,
"channelType":1,
"videoStreamType":0,
"transcodingConfig":{
"height":640,
"width":360,
"bitrate":500,
"fps":15,
"mixedVideoLayout":1,
"backgroundColor":"#FF0000"
},
"subscribeVideoUids":[
"123",
"456"
],
"subscribeAudioUids":[
"123",
"456"
],
"subscribeUidGroup":0
},
"storageConfig":{
"vendor":1,
"region":0,
"bucket":"{{Bucket}}",
"accessKey":"{{AccessKey}}",
"secretKey":"{{SecretKey}}",
"fileNamePrefix":[
"directory1",
"directory2"
]
},
"recordingFileConfig":{
"avFileType":[
"hls"
]
}
}
}
I am using react-native-firebase in react-native project for Firebase cloud messaging. It is working fine when app is running or in background/minimised. But notification not received when app is killed or not opened after mobile restart.
I am sending the following body to
https://fcm.googleapis.com/fcm/send
{
"to": "/topics/chatProperty_P00025_14",
"notification" : {
"body" : "great match!",
"content_available" : true,
"priority" : "high",
"title" : "Portugal vs. Denmark",
"sound":"default",
"vibrate":true
},
"data" : {
"body" : "14_P00025",
"content_available" : true,
"priority" : "high",
"title" : "Portugal vs. Denmark",
"type" : "propertyAdd",
"sound":"default",
"vibrate":true,
"propertyId":"1"
}
}
"to":"your token",
"apn": {
"content_available": "1"
},
"content_available": true,
"sound": "default",
"icon": "ic_launcher",
"priority": "high",
"notification": {
"title": "Reminder Appointment",
"body": "You have appointment today with Doctor ${detailData.doctor_name} on ${appTime}"
},
"data": {
"id_appointment": "${detailData.book_id}",
"id_doctor": "${detailData.doctor_email}",
"id_patient": "${detailData.patient_email}",
"speciality": "${detailData.speciality}",
"speciality_id": "${detailData.speciality_id}"
}
if you're using react native firebase , you can try using this format on postman or insomnia by hit this endpoint (https://fcm.googleapis.com/fcm/send), check the structure and don't forget include the firebase key (AlzaXXXXXX)