diff --git a/internal/push/offlinepush/fcm/push.go b/internal/push/offlinepush/fcm/push.go index 6e8355af3..463b72759 100644 --- a/internal/push/offlinepush/fcm/push.go +++ b/internal/push/offlinepush/fcm/push.go @@ -16,12 +16,14 @@ package fcm import ( "context" + "errors" "fmt" - "github.com/openimsdk/open-im-server/v3/internal/push/offlinepush/options" - "github.com/openimsdk/tools/utils/httputil" "path/filepath" "strings" + "github.com/openimsdk/open-im-server/v3/internal/push/offlinepush/options" + "github.com/openimsdk/tools/utils/httputil" + firebase "firebase.google.com/go/v4" "firebase.google.com/go/v4/messaging" "github.com/openimsdk/open-im-server/v3/pkg/common/config" @@ -133,7 +135,7 @@ func (f *Fcm) Push(ctx context.Context, userIDs []string, title, content string, unreadCountSum, err := f.cache.GetUserBadgeUnreadCountSum(ctx, userID) if err == nil && unreadCountSum != 0 { apns.Payload.Aps.Badge = &unreadCountSum - } else if err == redis.Nil || unreadCountSum == 0 { + } else if errors.Is(err, redis.Nil) || unreadCountSum == 0 { zero := 1 apns.Payload.Aps.Badge = &zero } else { diff --git a/internal/push/offlinepush/getui/body.go b/internal/push/offlinepush/getui/body.go index a96ff4efc..976e3c50d 100644 --- a/internal/push/offlinepush/getui/body.go +++ b/internal/push/offlinepush/getui/body.go @@ -18,6 +18,12 @@ import ( "fmt" "github.com/openimsdk/open-im-server/v3/pkg/common/config" + "github.com/openimsdk/tools/utils/datautil" +) + +var ( + incOne = datautil.ToPtr("+1") + addNum = "1" ) type Resp struct { @@ -112,6 +118,7 @@ type Notification struct { ChannelID string `json:"channelID"` ChannelName string `json:"ChannelName"` ClickType string `json:"click_type"` + BadgeAddNum string `json:"badge_add_num"` } type Options struct { @@ -140,6 +147,7 @@ func newPushReq(pushConf *config.Push, title, content string) PushReq { ClickType: "startapp", ChannelID: pushConf.GeTui.ChannelID, ChannelName: pushConf.GeTui.ChannelName, + BadgeAddNum: addNum, }}} return pushReq } @@ -156,6 +164,7 @@ func (pushReq *PushReq) setPushChannel(title string, body string) { notify := "notify" pushReq.PushChannel.Ios.NotificationType = ¬ify pushReq.PushChannel.Ios.Aps.Sound = "default" + pushReq.PushChannel.Ios.AutoBadge = incOne pushReq.PushChannel.Ios.Aps.Alert = Alert{ Title: title, Body: body, diff --git a/internal/push/offlinepush/getui/push.go b/internal/push/offlinepush/getui/push.go index e266f9c46..1ad66a152 100644 --- a/internal/push/offlinepush/getui/push.go +++ b/internal/push/offlinepush/getui/push.go @@ -18,6 +18,7 @@ import ( "context" "crypto/sha256" "encoding/hex" + "errors" "strconv" "sync" "time" @@ -70,7 +71,7 @@ func NewClient(pushConf *config.Push, cache cache.ThirdCache) *Client { func (g *Client) Push(ctx context.Context, userIDs []string, title, content string, opts *options.Opts) error { token, err := g.cache.GetGetuiToken(ctx) if err != nil { - if errs.Unwrap(err) == redis.Nil { + if errors.Is(err, redis.Nil) { log.ZDebug(ctx, "getui token not exist in redis") token, err = g.getTokenAndSave2Redis(ctx) if err != nil { diff --git a/pkg/common/storage/cache/redis/lua_script.go b/pkg/common/storage/cache/redis/lua_script.go index c7609cb44..acf7eaa79 100644 --- a/pkg/common/storage/cache/redis/lua_script.go +++ b/pkg/common/storage/cache/redis/lua_script.go @@ -2,7 +2,9 @@ package redis import ( "context" + "errors" "fmt" + "github.com/openimsdk/open-im-server/v3/pkg/common/servererrs" "github.com/openimsdk/tools/errs" "github.com/openimsdk/tools/log" @@ -56,7 +58,7 @@ func callLua(ctx context.Context, rdb redis.Scripter, script *redis.Script, keys } } v, err := r.Result() - if err == redis.Nil { + if errors.Is(err, redis.Nil) { err = nil } return v, errs.WrapMsg(err, "call lua err", "scriptHash", script.Hash(), "keys", keys, "args", args)