62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
|
|
package vendor
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"with_you/internal/config"
|
|||
|
|
"with_you/internal/pkg/jpush"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// defaultRenderer 默认通用文本渲染器
|
|||
|
|
type defaultRenderer struct{}
|
|||
|
|
|
|||
|
|
func newDefaultRenderer() *defaultRenderer {
|
|||
|
|
return &defaultRenderer{}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// mergeExtras 合并基础 extras 与额外 extras,返回新 map
|
|||
|
|
func mergeExtras(messageType string, extra map[string]any) map[string]any {
|
|||
|
|
out := make(map[string]any, len(extra)+1)
|
|||
|
|
if messageType != "" {
|
|||
|
|
out["notification_type"] = messageType
|
|||
|
|
}
|
|||
|
|
for k, v := range extra {
|
|||
|
|
out[k] = v
|
|||
|
|
}
|
|||
|
|
return out
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// RenderAndroid 渲染 Android 通用通知
|
|||
|
|
// 所有 Android 厂商共享:alert/title/channel_id/extras/large_icon/priority
|
|||
|
|
func (r *defaultRenderer) RenderAndroid(params MessageParams, cfg config.ChannelConfig) *jpush.AndroidNotif {
|
|||
|
|
channelID := cfg.Chat
|
|||
|
|
if params.Scene == SceneSystem {
|
|||
|
|
channelID = cfg.System
|
|||
|
|
}
|
|||
|
|
return &jpush.AndroidNotif{
|
|||
|
|
Alert: params.Body,
|
|||
|
|
Title: params.Title,
|
|||
|
|
ChannelID: channelID,
|
|||
|
|
LargeIcon: params.LargeIcon,
|
|||
|
|
Extras: mergeExtras(params.MessageType, params.Extra),
|
|||
|
|
Priority: 1,
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// RenderIOS 渲染 iOS 通用通知
|
|||
|
|
// iOS 走 APNs,通过 thread-id 实现按场景的通知分组
|
|||
|
|
func (r *defaultRenderer) RenderIOS(params MessageParams, cfg config.ChannelConfig) *jpush.IOSNotif {
|
|||
|
|
threadID := cfg.IOS.ChatThreadID
|
|||
|
|
if params.Scene == SceneSystem {
|
|||
|
|
threadID = cfg.IOS.SystemThreadID
|
|||
|
|
}
|
|||
|
|
return &jpush.IOSNotif{
|
|||
|
|
Alert: map[string]any{
|
|||
|
|
"title": params.Title,
|
|||
|
|
"body": params.Body,
|
|||
|
|
},
|
|||
|
|
Sound: "default",
|
|||
|
|
Badge: "+1",
|
|||
|
|
ThreadID: threadID,
|
|||
|
|
Extras: mergeExtras(params.MessageType, params.Extra),
|
|||
|
|
}
|
|||
|
|
}
|