Skip to content

Commit c4ed50f

Browse files
committed
Delete invalid token
1 parent 93c9aae commit c4ed50f

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

apns/apns.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ func ReCreateAPNS(maxClientCount int) error {
104104
return nil
105105
}
106106

107-
func Push(msg *PushMessage) error {
107+
func Push(msg *PushMessage) (code int, err error) {
108108
pl := payload.NewPayload().MutableContent()
109109
pushType := apns2.PushTypeAlert
110110
if msg.IsDelete() {
@@ -141,10 +141,10 @@ func Push(msg *PushMessage) error {
141141
PushType: pushType,
142142
})
143143
if err != nil {
144-
return err
144+
return 500, err
145145
}
146146
if resp.StatusCode != 200 {
147-
return fmt.Errorf("APNS push failed: %s", resp.Reason)
147+
return resp.StatusCode, fmt.Errorf(resp.Reason)
148148
}
149-
return nil
149+
return 200, nil
150150
}

database/bbolt.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ func (d *BboltDB) DeviceTokenByKey(key string) (string, error) {
5656
return fmt.Errorf("failed to get [%s] device token from database", key)
5757
} else {
5858
token = string(bs)
59+
if len(token) == 0 {
60+
return fmt.Errorf("device token invalid")
61+
}
5962
return nil
6063
}
6164
})

route_push.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,12 @@ func push(params map[string]interface{}) (int, error) {
262262
}
263263
msg.DeviceToken = deviceToken
264264

265-
err = apns.Push(&msg)
265+
code, err := apns.Push(&msg)
266+
267+
// Invalid token, delete it from database.
268+
if code == 410 || (code == 400 && strings.Contains(err.Error(), "BadDeviceToken")) {
269+
_, _ = db.SaveDeviceTokenByKey(msg.DeviceKey, "")
270+
}
266271
if err != nil {
267272
return 500, fmt.Errorf("push failed: %v", err)
268273
}

0 commit comments

Comments
 (0)