You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
3.2 KiB
81 lines
3.2 KiB
package apns2 |
|
|
|
import ( |
|
"encoding/json" |
|
) |
|
|
|
// NOTE these structs and "Table" refer to https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html |
|
|
|
// Payload payload. |
|
type Payload struct { |
|
Aps Aps `json:"aps"` |
|
URL string `json:"url"` // bilibili schedule |
|
TaskID string `json:"task_id"` |
|
Token string `json:"tid"` |
|
Image string `json:"image_url,omitempty"` |
|
} |
|
|
|
// Marshal marshals payload. |
|
func (p *Payload) Marshal() []byte { |
|
payload, _ := json.Marshal(p) |
|
return payload |
|
} |
|
|
|
// Aps Apple Push Service request meta. |
|
type Aps struct { |
|
// If this property is included, the system displays a standard alert or a banner, based on the user’s setting. |
|
// You can specify a string or a dictionary as the value of alert. |
|
// If you specify a string, it becomes the message text of an alert with two buttons: Close and View. |
|
// If the user taps View, the app launches. |
|
// If you specify a dictionary, refer to Table 5-2 for descriptions of the keys of this dictionary. |
|
// The JSON \U notation is not supported. Put the actual UTF-8 character in the alert text instead. |
|
Alert Alert `json:"alert,omitempty"` |
|
|
|
// The number to display as the badge of the app icon. |
|
// If this property is absent, the badge is not changed. To remove the badge, set the value of this property to 0. |
|
Badge int `json:"badge,omitempty"` |
|
|
|
// The name of a sound file in the app bundle or in the Library/Sounds folder of the app’s data container. |
|
// The sound in this file is played as an alert. If the sound file doesn’t exist or default is specified |
|
// as the value, the default alert sound is played. The audio must be in one of the audio data formats |
|
// that are compatible with system sounds; see Preparing Custom Alert Sounds for details. |
|
Sound string `json:"sound,omitempty"` |
|
|
|
// Provide this key with a value of 1 to indicate that new content is available. |
|
// Including this key and value means that when your app is launched in the background or resumed, |
|
// application:didReceiveRemoteNotification:fetchCompletionHandler: is called. |
|
ContentAvailable int `json:"content-available,omitempty"` |
|
|
|
// Provide this key with a string value that represents the identifier property of the |
|
// UIMutableUserNotificationCategory object you created to define custom actions. |
|
// To learn more about using custom actions, see Registering Your Actionable Notification Types. |
|
Category string `json:"category,omitempty"` |
|
// MutableContent . |
|
MutableContent int `json:"mutable-content,omitempty"` |
|
} |
|
|
|
// Alert alert message. |
|
type Alert struct { |
|
Title string `json:"title,omitempty"` |
|
Body string `json:"body,omitempty"` |
|
|
|
// could support any more other field |
|
} |
|
|
|
// Response reponse message. |
|
type Response struct { |
|
ApnsID string |
|
|
|
// Http status. (refer to Table 6-4) |
|
StatusCode int |
|
|
|
// The APNs error string indicating the reason for the notification failure (if |
|
// any). The error code is specified as a string. For a list of possible |
|
// values, see the Reason constants above. |
|
// If the notification was accepted, this value will be "". |
|
Reason string |
|
|
|
// If the value of StatusCode is 410, this is the last time at which APNs |
|
// confirmed that the device token was no longer valid for the topic. |
|
// Timestamp time.Time |
|
}
|
|
|