[go: nahoru, domu]

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(fcm): Added support for sending an image URL with notifications #261

Merged
merged 12 commits into from
Sep 12, 2019
Next Next commit
add analytics_label in FcmOptions + fix FcmOptions for WebpushFcmOptions
  • Loading branch information
Cyrille Hemidy committed Jun 27, 2019
commit cba18a690d5de6706b8151d47cef59dd893300cb
24 changes: 21 additions & 3 deletions messaging/messaging.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ type Message struct {
Android *AndroidConfig `json:"android,omitempty"`
Webpush *WebpushConfig `json:"webpush,omitempty"`
APNS *APNSConfig `json:"apns,omitempty"`
FcmOptions *FcmOptions `json:"fcm_options,omitempty"`
Token string `json:"token,omitempty"`
Topic string `json:"-"`
Condition string `json:"condition,omitempty"`
Expand Down Expand Up @@ -192,6 +193,7 @@ type AndroidConfig struct {
RestrictedPackageName string `json:"restricted_package_name,omitempty"`
Data map[string]string `json:"data,omitempty"` // if specified, overrides the Data field on Message type
Notification *AndroidNotification `json:"notification,omitempty"`
FcmOptions *AndroidFcmOptions `json:"fcm_options,omitempty"`
}

// MarshalJSON marshals an AndroidConfig into JSON (for internal use only).
Expand Down Expand Up @@ -268,6 +270,11 @@ type AndroidNotification struct {
ChannelID string `json:"channel_id,omitempty"`
}

// AndroidFcmOptions contains additional options for features provided by the FCM Android SDK.
type AndroidFcmOptions struct {
AnalyticsLabel string `json:"analytics_label,omitempty"`
}

// WebpushConfig contains messaging options specific to the WebPush protocol.
//
// See https://tools.ietf.org/html/rfc8030#section-5 for additional details, and supported
Expand All @@ -276,7 +283,7 @@ type WebpushConfig struct {
Headers map[string]string `json:"headers,omitempty"`
Data map[string]string `json:"data,omitempty"`
Notification *WebpushNotification `json:"notification,omitempty"`
FcmOptions *WebpushFcmOptions `json:"fcmOptions,omitempty"`
FcmOptions *WebpushFcmOptions `json:"fcm_options,omitempty"`
}

// WebpushNotificationAction represents an action that can be performed upon receiving a WebPush notification.
Expand Down Expand Up @@ -392,8 +399,9 @@ type WebpushFcmOptions struct {
// See https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html
// for more details on supported headers and payload keys.
type APNSConfig struct {
Headers map[string]string `json:"headers,omitempty"`
Payload *APNSPayload `json:"payload,omitempty"`
Headers map[string]string `json:"headers,omitempty"`
Payload *APNSPayload `json:"payload,omitempty"`
FcmOptions *APNSFcmOptions `json:"fcm_options,omitempty"`
}

// APNSPayload is the payload that can be included in an APNS message.
Expand Down Expand Up @@ -602,6 +610,16 @@ type ApsAlert struct {
LaunchImage string `json:"launch-image,omitempty"`
}

// APNSFcmOptions contains additional options for features provided by the FCM Aps SDK.
type APNSFcmOptions struct {
AnalyticsLabel string `json:"analytics_label,omitempty"`
}

// FcmOptions contains additional options.
type FcmOptions struct {
AnalyticsLabel string `json:"analytics_label,omitempty"`
}

// ErrorInfo is a topic management error.
type ErrorInfo struct {
Index int
Expand Down
20 changes: 19 additions & 1 deletion messaging/messaging_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,19 @@ var validMessages = []struct {
"k1": "v1",
"k2": "v2",
},
FcmOptions: &FcmOptions{
AnalyticsLabel: "Analytics",
},
Topic: "test-topic",
},
want: map[string]interface{}{
"data": map[string]interface{}{
"k1": "v1",
"k2": "v2",
},
"fcm_options": map[string]interface{}{
"analytics_label": "Analytics",
},
"topic": "test-topic",
},
},
Expand Down Expand Up @@ -153,6 +159,9 @@ var validMessages = []struct {
ChannelID: "channel",
},
TTL: &ttlWithNanos,
FcmOptions: &AndroidFcmOptions{
AnalyticsLabel: "Analytics",
},
},
Topic: "test-topic",
},
Expand All @@ -171,6 +180,9 @@ var validMessages = []struct {
"channel_id": "channel",
},
"ttl": "1.500000000s",
"fcm_options": map[string]interface{}{
"analytics_label": "Analytics",
},
},
"topic": "test-topic",
},
Expand Down Expand Up @@ -260,7 +272,7 @@ var validMessages = []struct {
"k1": "v1",
"k2": "v2",
},
"fcmOptions": map[string]interface{}{
"fcm_options": map[string]interface{}{
"link": "https://link.com",
},
},
Expand Down Expand Up @@ -308,6 +320,9 @@ var validMessages = []struct {
"k2": true,
},
},
FcmOptions: &APNSFcmOptions{
AnalyticsLabel: "Analytics",
},
},
Topic: "test-topic",
},
Expand All @@ -327,6 +342,9 @@ var validMessages = []struct {
"k1": "v1",
"k2": true,
},
"fcm_options": map[string]interface{}{
"analytics_label": "Analytics",
},
},
"topic": "test-topic",
},
Expand Down