diff --git a/notification.go b/notification.go index ce59843..c7d8ce7 100644 --- a/notification.go +++ b/notification.go @@ -13,6 +13,18 @@ type ExtendJSON struct { Value string `json:"val"` } +type alert struct { + Action string `json:"action,omitempty"` + ActionLocKey string `json:"action-loc-key,omitempty"` + Body string `json:"body,omitempty"` + LaunchImage string `json:"launch-image,omitempty"` + LocArgs []string `json:"loc-args,omitempty"` + LocKey string `json:"loc-key,omitempty"` + Title string `json:"title,omitempty"` + TitleLocArgs []string `json:"title-loc-args,omitempty"` + TitleLocKey string `json:"title-loc-key,omitempty"` +} + type RequestPushNotification struct { // Common Tokens []string `json:"tokens" binding:"required"` @@ -33,7 +45,10 @@ type RequestPushNotification struct { Sound string `json:"sound,omitempty"` Expiry int `json:"expiry,omitempty"` Retry int `json:"retry,omitempty"` + Category string `json:"category,omitempty"` + URLArgs []string `json:"url-args,omitempty"` Extend []ExtendJSON `json:"extend,omitempty"` + Alert alert `json:"alert,omitempty"` // meta IDs []uint64 `json:"seq_id,omitempty"` } @@ -77,7 +92,7 @@ func pushNotificationIos(req RequestPushNotification, client *apns.Client) bool notification.Topic = req.Topic } - if len(req.Priority) > 0 && req.Priority == "low" { + if len(req.Priority) > 0 && req.Priority == "normal" { notification.Priority = apns.PriorityLow } @@ -101,6 +116,50 @@ func pushNotificationIos(req RequestPushNotification, client *apns.Client) bool } } + // Alert dictionary + + if len(req.Alert.Title) > 0 { + payload.AlertTitle(req.Alert.Title) + } + + if len(req.Alert.TitleLocKey) > 0 { + payload.AlertTitleLocKey(req.Alert.TitleLocKey) + } + + if len(req.Alert.LocArgs) > 0 { + payload.AlertTitleLocArgs(req.Alert.LocArgs) + } + + if len(req.Alert.Body) > 0 { + payload.AlertBody(req.Alert.Body) + } + + if len(req.Alert.LaunchImage) > 0 { + payload.AlertLaunchImage(req.Alert.LaunchImage) + } + + if len(req.Alert.LocKey) > 0 { + payload.AlertLocKey(req.Alert.LocKey) + } + + if len(req.Alert.Action) > 0 { + payload.AlertAction(req.Alert.Action) + } + + if len(req.Alert.ActionLocKey) > 0 { + payload.AlertActionLocKey(req.Alert.ActionLocKey) + } + + // General + + if len(req.Category) > 0 { + payload.Category(req.Category) + } + + if len(req.URLArgs) > 0 { + payload.URLArgs(req.URLArgs) + } + notification.Payload = payload // send ios notification