mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-08-07 19:50:07 +08:00
fix:FCM push failed will return error (#2347)
* fix:FCM push failed will return error * fix:change error delimiter
This commit is contained in:
parent
a8d5ec314a
commit
180532317e
@ -16,8 +16,10 @@ package fcm
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"github.com/openimsdk/open-im-server/v3/internal/push/offlinepush/options"
|
"github.com/openimsdk/open-im-server/v3/internal/push/offlinepush/options"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
firebase "firebase.google.com/go"
|
firebase "firebase.google.com/go"
|
||||||
"firebase.google.com/go/messaging"
|
"firebase.google.com/go/messaging"
|
||||||
@ -79,6 +81,8 @@ func (f *Fcm) Push(ctx context.Context, userIDs []string, title, content string,
|
|||||||
notification.Body = content
|
notification.Body = content
|
||||||
notification.Title = title
|
notification.Title = title
|
||||||
var messages []*messaging.Message
|
var messages []*messaging.Message
|
||||||
|
var sendErrBuilder strings.Builder
|
||||||
|
var msgErrBuilder strings.Builder
|
||||||
for userID, personTokens := range allTokens {
|
for userID, personTokens := range allTokens {
|
||||||
apns := &messaging.APNSConfig{Payload: &messaging.APNSPayload{Aps: &messaging.Aps{Sound: opts.IOSPushSound}}}
|
apns := &messaging.APNSConfig{Payload: &messaging.APNSPayload{Aps: &messaging.Aps{Sound: opts.IOSPushSound}}}
|
||||||
messageCount := len(messages)
|
messageCount := len(messages)
|
||||||
@ -86,9 +90,21 @@ func (f *Fcm) Push(ctx context.Context, userIDs []string, title, content string,
|
|||||||
response, err := f.fcmMsgCli.SendAll(ctx, messages)
|
response, err := f.fcmMsgCli.SendAll(ctx, messages)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Fail = Fail + messageCount
|
Fail = Fail + messageCount
|
||||||
|
// Record push error
|
||||||
|
sendErrBuilder.WriteString(err.Error())
|
||||||
|
sendErrBuilder.WriteByte('.')
|
||||||
} else {
|
} else {
|
||||||
Success = Success + response.SuccessCount
|
Success = Success + response.SuccessCount
|
||||||
Fail = Fail + response.FailureCount
|
Fail = Fail + response.FailureCount
|
||||||
|
if response.FailureCount != 0 {
|
||||||
|
// Record message error
|
||||||
|
for i := range response.Responses {
|
||||||
|
if !response.Responses[i].Success {
|
||||||
|
msgErrBuilder.WriteString(response.Responses[i].Error.Error())
|
||||||
|
msgErrBuilder.WriteByte('.')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
messages = messages[0:0]
|
messages = messages[0:0]
|
||||||
}
|
}
|
||||||
@ -134,5 +150,9 @@ func (f *Fcm) Push(ctx context.Context, userIDs []string, title, content string,
|
|||||||
Fail = Fail + response.FailureCount
|
Fail = Fail + response.FailureCount
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if Fail != 0 {
|
||||||
|
return errs.New(fmt.Sprintf("%d message send failed;send err:%s;message err:%s",
|
||||||
|
Fail, sendErrBuilder.String(), msgErrBuilder.String())).Wrap()
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user