firebase / firebase-admin-go

Firebase Admin Go SDK

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Way to unmarshal `Message` from json string (apns.payload.aps.*)

jeyraof opened this issue · comments

[REQUIRED] Step 2: Describe your environment

  • Operating System version: macOS Ventura 13.5.2
  • Firebase SDK version: 4.12.1
  • Library version: ?
  • Firebase Product: messaging (auth, database, storage, etc)

[REQUIRED] Step 3: Describe the problem

Steps to reproduce:

I've deal with json like:

{
  "token": "$FCM_TOKEN",
  "data": {
    "title": "data.title",
    "body": "data.body"
  },
  "notification": {
    "title": "notification.title",
    "body": "notification.body"
  },
  "apns": {
    "payload": {
      "aps": {
        "content-available": false,
        "sound": "1",
        "mutable-content": true,
        "alert": {
          "title": "apns.payload.aps.alert.title",
          "subtitle": "apns.payload.aps.alert.subtitle",
          "body": "apns.payload.aps.alert.body"
        }
      }
    }
  }
}

For use Message's interface, I have to unmarshal this json to Message struct.
So I tried to:

// 1st way
message := &messaging.Message{}
err = message.UnmarshalJSON(messageJsonString)
if err != nil {
	fmt.Println(err.Error())
}

// 1st way's error:
json: cannot unmarshal bool into Go struct field APNSConfig.apns.payload of type int
// 2nd way
message := &messaging.Message{}
err = json.Unmarshal(messageJsonString)
if err != nil {
	fmt.Println(err.Error())
}

// 2nd way's error:
json: cannot unmarshal bool into Go struct field APNSConfig.apns.payload of type int

I did some testing and found that it works fine without "content-available" and "mutable-content" in the json.
How can I parse content-available and mutable-content?
This fields are from apple reference