@tencentcloud/sdk-mcp 1.6.7 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/README.md +54 -35
- package/knowledge/build-index.js +32 -5
- package/knowledge/chunker.js +82 -14
- package/knowledge/chunking-policy.js +100 -0
- package/knowledge/content-loader.js +3 -1
- package/knowledge/frontmatter-meta.js +167 -0
- package/knowledge/path-meta.js +28 -6
- package/knowledge/search/exact-lookup.js +26 -123
- package/knowledge/search/filter-pool.js +17 -26
- package/knowledge/search/framework-fallback.js +22 -0
- package/knowledge/search/intent-router.js +13 -0
- package/knowledge/search/query-normalizer.js +129 -0
- package/knowledge/search/search-core.js +391 -0
- package/knowledge/search/search-knowledge.js +351 -323
- package/knowledge/search/search-message.js +87 -0
- package/knowledge/search/search-pass.js +428 -0
- package/knowledge/search/search-types.js +1 -0
- package/knowledge/search/url-row-scorer.js +258 -0
- package/package.json +1 -1
- package/resource/_schema/feature-aliases.yaml +1 -0
- package/resource/_schema/query-normalization.yaml +9 -0
- package/resource/index/manifest.json +1 -1
- package/resource/integration/callkit/preset/android/integration.md +0 -14
- package/resource/integration/callkit/preset/flutter/integration.md +0 -9
- package/resource/integration/callkit/preset/ios/integration.md +2 -14
- package/resource/integration/callkit/preset/react/integration.md +0 -21
- package/resource/integration/callkit/preset/vue/integration.md +0 -27
- package/resource/integration/chat/preset/android/integration.md +3 -10
- package/resource/integration/chat/preset/flutter/integration.md +12 -13
- package/resource/integration/chat/preset/ios/integration.md +9 -16
- package/resource/integration/chat/preset/react/integration.md +1 -9
- package/resource/integration/chat/preset/uni-app/integration.md +0 -9
- package/resource/integration/chat/preset/vue/integration.md +3 -13
- package/resource/integration/livekit/preset/live/android/live-host-integration.md +0 -4
- package/resource/integration/livekit/preset/live/android/prepare-integration.md +8 -21
- package/resource/integration/livekit/preset/live/ios/live-audience-integration.md +0 -1
- package/resource/integration/livekit/preset/live/ios/live-host-integration.md +0 -5
- package/resource/integration/livekit/preset/live/ios/live-list-integration.md +0 -4
- package/resource/integration/livekit/preset/live/ios/prepare-integration.md +0 -9
- package/resource/integration/livekit/preset/live/vue/live-list-integration.md +1 -5
- package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +38 -147
- package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +1 -6
- package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +432 -286
- package/resource/integration/roomkit/preset/vue/integration.md +11 -24
- package/resource/knowledge/callkit/best-practice/callkit-miniprogram/uniapp-shrink.md +64 -0
- package/resource/knowledge/callkit/best-practice/common/call-autoplay-blocked.md +81 -0
- package/resource/knowledge/callkit/best-practice/common/call-message-in-chat.md +84 -0
- package/resource/knowledge/callkit/best-practice/common/call-vs-calls.md +114 -0
- package/resource/knowledge/callkit/best-practice/common/callengine-call-flow.md +128 -0
- package/resource/knowledge/callkit/best-practice/common/callengine-log-level.md +72 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-get-engine-instance.md +87 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-get-roomid.md +83 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-limitations.md +37 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-user-register-and-kicked.md +103 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +1 -20
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +0 -12
- package/resource/knowledge/callkit/core-sdk/android/offline-push.md +1 -12
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +0 -19
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +0 -13
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -17
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +0 -13
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +0 -13
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +0 -12
- package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +0 -1
- package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +0 -2
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +0 -15
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +0 -15
- package/resource/knowledge/callkit/core-sdk/web/call-engine.md +0 -1
- package/resource/knowledge/callkit/core-sdk/web/call-event.md +0 -1
- package/resource/knowledge/callkit/core-sdk/web/callengine-api-overview.md +0 -1
- package/resource/knowledge/callkit/faq/android.md +5 -15
- package/resource/knowledge/callkit/faq/common.md +0 -1
- package/resource/knowledge/callkit/faq/ios.md +1 -4
- package/resource/knowledge/callkit/faq/uniapp-app.md +0 -2
- package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +0 -5
- package/resource/knowledge/callkit/faq/web.md +1 -5
- package/resource/knowledge/callkit/preset/android/api.md +0 -6
- package/resource/knowledge/callkit/preset/ios/api.md +0 -4
- package/resource/knowledge/callkit/preset/miniprogram/api.md +0 -2
- package/resource/knowledge/callkit/preset/react/api.md +3 -154
- package/resource/knowledge/callkit/preset/vue/api.md +3 -42
- package/resource/knowledge/chat/best-practice/common/avchatroom-message-loss-diagnosis.md +71 -0
- package/resource/knowledge/chat/best-practice/common/group-conversation-cleanup-on-system-notice.md +67 -0
- package/resource/knowledge/chat/best-practice/common/image-message-url-lifecycle.md +63 -0
- package/resource/knowledge/chat/best-practice/common/login-repeat-2025-diagnosis.md +65 -0
- package/resource/knowledge/chat/best-practice/common/message-read-report-and-receipt.md +72 -0
- package/resource/knowledge/chat/best-practice/common/message-receive-event.md +70 -0
- package/resource/knowledge/chat/best-practice/common/message-risk-error-and-render.md +69 -0
- package/resource/knowledge/chat/best-practice/common/message-unread-count.md +71 -0
- package/resource/knowledge/chat/best-practice/miniprogram/audio-message-send.md +118 -0
- package/resource/knowledge/chat/best-practice/miniprogram/login-timeout-2801-diagnosis.md +67 -0
- package/resource/knowledge/chat/best-practice/miniprogram/media-upload-fail-diagnosis.md +68 -0
- package/resource/knowledge/chat/best-practice/web/audio-message-send.md +123 -0
- package/resource/knowledge/chat/preset/android/features/chat-setting.md +1 -4
- package/resource/knowledge/chat/preset/android/features/contact-list.md +0 -5
- package/resource/knowledge/chat/preset/android/features/conversation-list.md +1 -9
- package/resource/knowledge/chat/preset/android/features/language.md +1 -11
- package/resource/knowledge/chat/preset/android/features/message-input.md +1 -8
- package/resource/knowledge/chat/preset/android/features/message-list.md +1 -10
- package/resource/knowledge/chat/preset/android/features/search.md +0 -7
- package/resource/knowledge/chat/preset/android/features/theme.md +0 -6
- package/resource/knowledge/chat/preset/android-view/integration.md +3 -5
- package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +1 -4
- package/resource/knowledge/chat/preset/flutter/features/contact-list.md +1 -6
- package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +1 -9
- package/resource/knowledge/chat/preset/flutter/features/language.md +0 -3
- package/resource/knowledge/chat/preset/flutter/features/message-input.md +1 -8
- package/resource/knowledge/chat/preset/flutter/features/message-list.md +1 -10
- package/resource/knowledge/chat/preset/flutter/features/search.md +0 -7
- package/resource/knowledge/chat/preset/flutter/features/theme.md +0 -6
- package/resource/knowledge/chat/preset/ios/features/chat-setting.md +1 -4
- package/resource/knowledge/chat/preset/ios/features/contact-list.md +1 -8
- package/resource/knowledge/chat/preset/ios/features/conversation-list.md +1 -9
- package/resource/knowledge/chat/preset/ios/features/language.md +0 -11
- package/resource/knowledge/chat/preset/ios/features/message-input.md +1 -8
- package/resource/knowledge/chat/preset/ios/features/message-list.md +1 -10
- package/resource/knowledge/chat/preset/ios/features/search.md +0 -5
- package/resource/knowledge/chat/preset/ios/features/theme.md +0 -6
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +5 -17
- package/resource/knowledge/chat/preset/react/features/chat-setting.md +0 -2
- package/resource/knowledge/chat/preset/react/features/contact-list.md +0 -23
- package/resource/knowledge/chat/preset/react/features/conversation-actions.md +2 -11
- package/resource/knowledge/chat/preset/react/features/conversation-list.md +2 -23
- package/resource/knowledge/chat/preset/react/features/conversation-preview.md +0 -5
- package/resource/knowledge/chat/preset/react/features/search.md +0 -1
- package/resource/knowledge/chat/preset/vue/features/chat-header.md +1 -3
- package/resource/knowledge/chat/preset/vue/features/chat-setting.md +3 -5
- package/resource/knowledge/chat/preset/vue/features/contact-list.md +3 -9
- package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +0 -3
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +2 -13
- package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +2 -5
- package/resource/knowledge/chat/preset/vue/features/conversation-search.md +1 -0
- package/resource/knowledge/chat/preset/vue/features/message-input.md +2 -4
- package/resource/knowledge/chat/preset/vue/features/message-list.md +2 -4
- package/resource/knowledge/chat/preset/vue/features/search.md +4 -1
- package/resource/knowledge/chat/preset/vue/features/theme.md +4 -6
- package/resource/knowledge/chat/urls/sdk/web.md +1 -1
- package/resource/knowledge/livekit/best-practice/android/voice-room-anchor-start.md +124 -0
- package/resource/knowledge/livekit/best-practice/common/admin-take-seat.md +73 -0
- package/resource/knowledge/livekit/best-practice/common/audience-leave-live.md +81 -0
- package/resource/knowledge/livekit/best-practice/common/voice-room-no-audio-troubleshoot.md +100 -0
- package/resource/knowledge/livekit/best-practice/common/voice-room-seat-list-change.md +65 -0
- package/resource/knowledge/livekit/best-practice/flutter/voice-room-anchor-start.md +126 -0
- package/resource/knowledge/livekit/best-practice/ios/voice-room-anchor-start.md +130 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +1 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +1 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +1 -3
- package/resource/knowledge/livekit/core-sdk/features/android/audience-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/android/audio-effect.md +1 -3
- package/resource/knowledge/livekit/core-sdk/features/android/barrage.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/android/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/android/gift.md +2 -7
- package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/audience-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/audio-effect.md +0 -4
- package/resource/knowledge/livekit/core-sdk/features/flutter/barrage.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/gift.md +3 -7
- package/resource/knowledge/livekit/core-sdk/features/flutter/live-list.md +3 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/audience-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/audio-effect.md +1 -3
- package/resource/knowledge/livekit/core-sdk/features/ios/barrage.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/gift.md +2 -7
- package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/audience-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/audio-effect.md +1 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/barrage.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/gift.md +4 -8
- package/resource/knowledge/livekit/core-sdk/features/uni-app/live-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +0 -3
- package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/android/integration.md +0 -7
- package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +1 -7
- package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +0 -3
- package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +0 -7
- package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +0 -5
- package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +1 -3
- package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +4 -13
- package/resource/knowledge/livekit/core-sdk/voice/android/integration.md +5 -5
- package/resource/knowledge/livekit/core-sdk/voice/flutter/co-guest-interaction.md +0 -3
- package/resource/knowledge/livekit/core-sdk/voice/flutter/integration.md +18 -21
- package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +2 -11
- package/resource/knowledge/livekit/core-sdk/voice/ios/integration.md +8 -8
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +1 -4
- package/resource/knowledge/livekit/faq/error-code.md +1 -1
- package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +0 -5
- package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +1 -1
- package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +0 -3
- package/resource/knowledge/push/api-reference/donut.md +1 -6
- package/resource/knowledge/push/api-reference/harmonyos.md +0 -2
- package/resource/knowledge/push/api-reference/react-native.md +0 -3
- package/resource/knowledge/push/api-reference/uni-app.md +3 -5
- package/resource/knowledge/push/api-reference/unity.md +0 -1
- package/resource/knowledge/push/api-reference/unreal-engine.md +0 -1
- package/resource/knowledge/push/config/android/fcm.md +0 -6
- package/resource/knowledge/push/config/android/honor.md +1 -7
- package/resource/knowledge/push/config/android/huawei.md +1 -9
- package/resource/knowledge/push/config/android/meizu.md +1 -7
- package/resource/knowledge/push/config/android/oppo.md +1 -3
- package/resource/knowledge/push/config/android/vivo.md +1 -12
- package/resource/knowledge/push/config/android/xiaomi.md +0 -5
- package/resource/knowledge/push/config/donut.md +0 -12
- package/resource/knowledge/push/config/harmonyos.md +18 -7
- package/resource/knowledge/push/config/ios.md +26 -33
- package/resource/knowledge/push/config/react-native.md +0 -30
- package/resource/knowledge/push/config/unity.md +0 -30
- package/resource/knowledge/push/config/unreal-engine.md +0 -30
- package/resource/knowledge/push/integration/android.md +148 -57
- package/resource/knowledge/push/integration/donut.md +5 -21
- package/resource/knowledge/push/integration/flutter.md +4 -6
- package/resource/knowledge/push/integration/harmonyos.md +17 -16
- package/resource/knowledge/push/integration/ios.md +30 -18
- package/resource/knowledge/push/integration/react-native.md +10 -60
- package/resource/knowledge/push/integration/uni-app.md +3 -25
- package/resource/knowledge/push/integration/unity.md +8 -77
- package/resource/knowledge/push/integration/unreal-engine.md +37 -96
- package/resource/knowledge/roomkit/best-practice/common/room-ghost-member.md +75 -0
- package/resource/knowledge/roomkit/best-practice/common/room-limit-and-multi.md +88 -0
- package/resource/knowledge/roomkit/best-practice/common/room-screen-share-preview.md +87 -0
- package/resource/knowledge/roomkit/best-practice/common/room-status-after-all-leave.md +73 -0
- package/resource/knowledge/roomkit/best-practice/vue/room-uikit-vs-atomicx.md +115 -0
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +3 -5
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +4 -6
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +2 -4
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +4 -6
- package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +3 -5
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +4 -6
- package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +0 -5
- package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -5
- package/resource/knowledge/roomkit/core-sdk/vue/room-participant-state.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +1 -7
- package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +1 -2
- package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +0 -1
- package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +0 -3
- package/resource/knowledge/roomkit/preset/android/integration.md +202 -6
- package/resource/knowledge/roomkit/preset/flutter/integration.md +1 -16
- package/resource/knowledge/roomkit/preset/ios/integration.md +201 -7
- package/resource/knowledge/roomkit/preset/react/integration.md +205 -4
- package/resource/knowledge/rtcengine/web/api.md +0 -2
- package/resource/knowledge/rtcengine/web/plugin/22-advanced-audio-mixer.md +2 -2
- package/resource/knowledge/rtcengine/web/plugin/23-advanced-support-detection.md +3 -3
- package/resource/knowledge/rtcengine/web/plugin/28-advanced-beauty.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/30-advanced-cross-room-link.md +2 -0
- package/resource/knowledge/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -4
- package/resource/knowledge/rtcengine/web/plugin/39-advanced-video-decoder.md +2 -0
- package/resource/knowledge/share/userSig.md +2 -2
- package/resource/knowledge/trtc/android/TRTCCloud.md +16 -16
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +5 -5
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +3 -3
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +2 -2
- package/resource/knowledge/trtc/android/TXDeviceManager.md +1 -1
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +14 -14
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +2 -2
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +4 -4
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +3 -3
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +5 -5
- package/resource/knowledge/trtc/ios/TRTCCloud.md +14 -14
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +3 -3
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +2 -2
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +4 -4
- package/resource/knowledge/trtc/ios/TXLiveSDKTypeDef.md +5 -5
- package/server.js +8 -3
- package/tools/common/finalize_answer.js +9 -1
- package/tools/common/search_trtc_knowledge.js +3 -1
- package/tools/definitions/finalize_answer_def.js +2 -2
- package/tools/definitions/integration-boundary.js +2 -1
- package/tools/definitions/search_trtc_knowledge_def.js +2 -1
- package/utils/report-cls-client.js +3 -3
- package/utils/report-es-client.js +1 -1
- package/cursor-setting.png +0 -0
- package/mcp-server-prompt.png +0 -0
- package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +0 -80
- package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +0 -20
- package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +0 -116
- package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +0 -475
- package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +0 -587
- package/resource/knowledge/callkit/preset/web/api.md +0 -79
- package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +0 -16
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## 前提条件
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
请确认已 开通 Push 服务 并按需完成 **Android 厂商配置**(小米 / 华为 / OPPO / vivo / 荣耀 / 魅族 / Google FCM),获取到了下列信息:
|
|
6
6
|
|
|
7
7
|
|**资源**|**获取位置**|**用途**|
|
|
8
8
|
|---------|---------|---------|
|
|
@@ -19,25 +19,21 @@
|
|
|
19
19
|
|
|
20
20
|
## AI 集成
|
|
21
21
|
|
|
22
|
-
通过
|
|
22
|
+
通过 npx 安装 [@tencent-rtc/trtc-push-skill](https://www.npmjs.com/package/@tencent-rtc/trtc-push-skill/v/1.0.1#%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 到本地 AI IDE 中,辅助完成 TIMPush 离线推送集成。安装后,您可以直接向 AI 输入“集成 Android 离线推送”“帮我集成 Android TIMPush”等需求,AI 将根据项目类型引导您完成环境检测、厂商通道配置、凭据填写、代码接入和验证等步骤。
|
|
23
23
|
|
|
24
24
|
> **注意:**
|
|
25
|
-
>
|
|
26
25
|
> 使用 Push Skill AI 集成不是全自动流程,依然需要开发者在厂商配置控制台、腾讯云控制台等配置 Push 相关信息。具体的配置方法请参考下文相关章节。
|
|
27
26
|
>
|
|
28
27
|
|
|
29
28
|
## 集成 TIMPush
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
如果您想手动集成,请按下述操作步骤依次完成放置配置文件、配置 Gradle、补充 Manifest 与混淆。
|
|
32
31
|
|
|
33
32
|
### 下载并添加 TIMPush 配置文件
|
|
34
33
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
下载后,将该文件添加到应用模块的 `assets` 目录。推荐存储路径:`app/src/main/assets/timpush-configs.json`,其中 app 是你项目的应用模块,可替换成实际名称。如果工程中没有 `assets` 目录,请在 `src/main/` 下手动创建。
|
|
34
|
+
下载后,将该文件添加到应用模块的 `assets` 目录。推荐存储路径:`app/src/main/assets/timpush-configs.json`,其中 app 是您项目的应用模块,可替换成实际名称。如果工程中没有 `assets` 目录,请在 `src/main/` 下手动创建。
|
|
38
35
|
|
|
39
36
|
> **注意:**
|
|
40
|
-
>
|
|
41
37
|
> TIMPush 注册推送时会读取该文件中的厂商证书配置,不要放在 MainActivity 同级目录、工程根目录或 res 目录。如果文件缺失或放错目录,SDK 无法获得对应厂商通道配置,可能导致注册或收消息失败。
|
|
42
38
|
>
|
|
43
39
|
|
|
@@ -50,14 +46,13 @@
|
|
|
50
46
|
|荣耀|`mcs-services.json`|在荣耀开发者服务平台下载。修改项目、应用信息或开发服务设置后,需要重新下载。|
|
|
51
47
|
|Google FCM|`google-services.json`|在 Firebase 控制台下载。|
|
|
52
48
|
|
|
53
|
-
推荐放置路径如下(与应用模块的 `build.gradle` / `build.gradle.kts` 同级),其中 app
|
|
49
|
+
推荐放置路径如下(与应用模块的 `build.gradle` / `build.gradle.kts` 同级),其中 app 是您项目的应用模块,可替换成实际名称:
|
|
54
50
|
``` text
|
|
55
51
|
app/mcs-services.json # 荣耀
|
|
56
52
|
app/google-services.json # Google FCM
|
|
57
53
|
```
|
|
58
54
|
|
|
59
55
|
> **注意:**
|
|
60
|
-
>
|
|
61
56
|
> 修改厂商平台项目、应用信息、证书指纹或开发服务设置后,厂商配置文件需要重新下载并替换。
|
|
62
57
|
>
|
|
63
58
|
|
|
@@ -75,7 +70,6 @@ Android 工程可能使用 Groovy DSL 或 Kotlin DSL,请先根据文件后缀
|
|
|
75
70
|
请根据工程使用的 Gradle 版本选择配置位置。如果不确定工程使用的 Gradle 版本,可在项目根目录 `gradle/wrapper/gradle-wrapper.properties` 中查看 `distributionUrl` 对应的版本号。
|
|
76
71
|
|
|
77
72
|
> **注意:**
|
|
78
|
-
>
|
|
79
73
|
> 不要把 Groovy 示例直接复制到 `.kts` 文件中。Kotlin DSL 使用双引号、括号和 `uri(...)` 写法。
|
|
80
74
|
>
|
|
81
75
|
|
|
@@ -84,10 +78,11 @@ Android 工程可能使用 Groovy DSL 或 Kotlin DSL,请先根据文件后缀
|
|
|
84
78
|
在项目级 `settings.gradle`(Groovy DSL)或 `settings.gradle.kts`(Kotlin DSL)中,同时在 `pluginManagement > repositories` 和 `dependencyResolutionManagement > repositories` 中添加仓库。
|
|
85
79
|
|
|
86
80
|
【Groovy DSL (settings.gradle)】
|
|
87
|
-
```
|
|
81
|
+
``` java
|
|
88
82
|
pluginManagement {
|
|
89
83
|
repositories {
|
|
90
84
|
gradlePluginPortal()
|
|
85
|
+
google()
|
|
91
86
|
mavenCentral()
|
|
92
87
|
maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" }
|
|
93
88
|
maven { url "https://developer.huawei.com/repo/" }
|
|
@@ -108,10 +103,11 @@ dependencyResolutionManagement {
|
|
|
108
103
|
```
|
|
109
104
|
|
|
110
105
|
【Kotlin DSL (settings.gradle.kts)】
|
|
111
|
-
```
|
|
106
|
+
``` java
|
|
112
107
|
pluginManagement {
|
|
113
108
|
repositories {
|
|
114
109
|
gradlePluginPortal()
|
|
110
|
+
google()
|
|
115
111
|
mavenCentral()
|
|
116
112
|
maven { url = uri("https://mirrors.tencent.com/nexus/repository/maven-public/") }
|
|
117
113
|
maven { url = uri("https://developer.huawei.com/repo/") }
|
|
@@ -133,12 +129,13 @@ dependencyResolutionManagement {
|
|
|
133
129
|
|
|
134
130
|
【Gradle 7.0 版本】
|
|
135
131
|
|
|
136
|
-
Gradle 7.0 版本通常使用 Groovy DSL
|
|
132
|
+
Gradle 7.0 版本通常使用 Groovy DSL。如您的工程使用 Kotlin DSL,请将单引号改为双引号,`url "..."` 改为 `url = uri("...")`。
|
|
137
133
|
1. 在项目级 `build.gradle` 的 `buildscript > repositories` 中添加插件仓库。
|
|
138
134
|
|
|
139
|
-
```
|
|
135
|
+
``` groovy
|
|
140
136
|
buildscript {
|
|
141
137
|
repositories {
|
|
138
|
+
google()
|
|
142
139
|
mavenCentral()
|
|
143
140
|
maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" }
|
|
144
141
|
maven { url "https://developer.huawei.com/repo/" }
|
|
@@ -153,7 +150,7 @@ buildscript {
|
|
|
153
150
|
```
|
|
154
151
|
2. 在 `settings.gradle` 的 `dependencyResolutionManagement > repositories` 中添加依赖仓库。
|
|
155
152
|
|
|
156
|
-
```
|
|
153
|
+
``` groovy
|
|
157
154
|
dependencyResolutionManagement {
|
|
158
155
|
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
|
|
159
156
|
repositories {
|
|
@@ -168,12 +165,13 @@ dependencyResolutionManagement {
|
|
|
168
165
|
|
|
169
166
|
【Gradle 7.0 以下版本】
|
|
170
167
|
|
|
171
|
-
Gradle 7.0 以下版本通常使用 Groovy DSL
|
|
168
|
+
Gradle 7.0 以下版本通常使用 Groovy DSL。如您的工程使用 Kotlin DSL,请将单引号改为双引号,`url "..."` 改为 `url = uri("...")`。
|
|
172
169
|
|
|
173
170
|
在项目级 `build.gradle` 的 `buildscript > repositories` 和 `allprojects > repositories` 中添加仓库。
|
|
174
171
|
``` groovy
|
|
175
172
|
buildscript {
|
|
176
173
|
repositories {
|
|
174
|
+
google()
|
|
177
175
|
mavenCentral()
|
|
178
176
|
maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" }
|
|
179
177
|
maven { url "https://developer.huawei.com/repo/" }
|
|
@@ -197,67 +195,144 @@ allprojects {
|
|
|
197
195
|
}
|
|
198
196
|
```
|
|
199
197
|
|
|
198
|
+
> **说明:**
|
|
199
|
+
> - 如果旧工程已升级到 Gradle 8 / AGP 8,请不要继续使用 `com.huawei.agconnect:agcp:1.6.0.300`,建议改为 `com.huawei.agconnect:agcp:1.9.1.301` 或更高已验证版本。
|
|
200
|
+
> - 若使用 Google FCM,`com.google.gms:google-services:4.4.2` 要求 AGP 7.3.0 及以上;如果项目的 AGP 低于 7.3.0,请改用与当前 AGP 兼容的 Google Services Gradle Plugin 版本,例如 `4.3.15`。
|
|
201
|
+
|
|
200
202
|
### 配置厂商插件
|
|
201
203
|
|
|
202
|
-
华为、荣耀和 Google FCM
|
|
203
|
-
|
|
204
|
+
华为、荣耀和 Google FCM 需要按厂商要求集成对应 Gradle 插件。插件会在构建期读取上一步放置的厂商配置文件,并将厂商要求的资源、Manifest 信息或初始化配置合并进应用包。
|
|
205
|
+
|
|
206
|
+
如果只集成某个厂商,只添加该厂商需要的插件和配置文件即可。例如未接入 FCM 时,不需要添加 `com.google.gms.google-services` 插件和 `google-services.json`。
|
|
207
|
+
|
|
208
|
+
#### 配置项目级插件依赖
|
|
204
209
|
|
|
205
|
-
|
|
210
|
+
项目级插件依赖用于让 Gradle 在构建期找到并加载华为、荣耀、Google FCM 等厂商插件。请先根据项目使用的 Gradle 版本选择对应配置。
|
|
206
211
|
|
|
207
|
-
|
|
212
|
+
【Gradle 7.1 及以上】
|
|
213
|
+
|
|
214
|
+
Gradle 7.1 及以上项目通常会在 `settings.gradle` 或 `settings.gradle.kts` 中配置依赖仓库。但如果厂商插件通过 `buildscript > dependencies > classpath` 声明,还需要在项目级 `build.gradle` 或 `build.gradle.kts` 的 `buildscript > repositories` 中同步配置插件仓库,否则可能出现厂商插件 classpath 依赖解析失败。
|
|
215
|
+
|
|
216
|
+
如果项目级 `build.gradle.kts` 已通过 `plugins {}` 块声明 AGP(新建 Kotlin DSL 项目的默认方式),原有 `plugins {}` 块保留不动,不需要整体迁移到 `buildscript` 写法。由于荣耀官方示例统一使用 `buildscript > dependencies > classpath` 声明 `asplugin`,请在项目级 Gradle 文件中额外补充 `buildscript` 配置,并在 `dependencies` 中声明 `com.android.tools.build:gradle`。如果项目同时使用 Kotlin Android 插件,也请声明 `org.jetbrains.kotlin:kotlin-gradle-plugin`。
|
|
217
|
+
|
|
218
|
+
请在 Android 工程的项目级 `build.gradle` 或 `build.gradle.kts` 中添加以下配置。
|
|
208
219
|
|
|
209
220
|
【Groovy DSL(build.gradle)】
|
|
210
|
-
```
|
|
221
|
+
``` java
|
|
211
222
|
buildscript {
|
|
223
|
+
repositories {
|
|
224
|
+
google()
|
|
225
|
+
mavenCentral()
|
|
226
|
+
gradlePluginPortal()
|
|
227
|
+
maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" }
|
|
228
|
+
maven { url "https://developer.huawei.com/repo/" }
|
|
229
|
+
maven { url "https://developer.hihonor.com/repo" }
|
|
230
|
+
}
|
|
212
231
|
dependencies {
|
|
213
|
-
|
|
214
|
-
classpath 'com.
|
|
232
|
+
// 请与项目当前 Android Gradle Plugin 版本保持一致。
|
|
233
|
+
classpath 'com.android.tools.build:gradle:<AGP_VERSION>'
|
|
234
|
+
// 如果项目使用 Kotlin Android 插件,请与项目当前 Kotlin Gradle Plugin 版本保持一致。
|
|
235
|
+
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:<KOTLIN_VERSION>'
|
|
236
|
+
// Google FCM。
|
|
237
|
+
classpath 'com.google.gms:google-services:4.4.2'
|
|
238
|
+
// 华为 AGConnect。Gradle 8 / AGP 8 项目不要继续使用 1.6.0.300。
|
|
239
|
+
classpath 'com.huawei.agconnect:agcp:1.9.1.301'
|
|
240
|
+
// 荣耀 Push。
|
|
215
241
|
classpath 'com.hihonor.mcs:asplugin:2.0.1.300'
|
|
216
242
|
}
|
|
217
243
|
}
|
|
218
244
|
```
|
|
219
245
|
|
|
220
246
|
【Kotlin DSL(build.gradle.kts)】
|
|
221
|
-
```
|
|
247
|
+
``` java
|
|
222
248
|
buildscript {
|
|
249
|
+
repositories {
|
|
250
|
+
google()
|
|
251
|
+
mavenCentral()
|
|
252
|
+
gradlePluginPortal()
|
|
253
|
+
maven { url = uri("https://mirrors.tencent.com/nexus/repository/maven-public/") }
|
|
254
|
+
maven { url = uri("https://developer.huawei.com/repo/") }
|
|
255
|
+
maven { url = uri("https://developer.hihonor.com/repo") }
|
|
256
|
+
}
|
|
223
257
|
dependencies {
|
|
224
|
-
|
|
225
|
-
classpath("com.
|
|
258
|
+
// 请与项目当前 Android Gradle Plugin 版本保持一致。
|
|
259
|
+
classpath("com.android.tools.build:gradle:<AGP_VERSION>")
|
|
260
|
+
// 如果项目使用 Kotlin Android 插件,请与项目当前 Kotlin Gradle Plugin 版本保持一致。
|
|
261
|
+
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:<KOTLIN_VERSION>")
|
|
262
|
+
// Google FCM。
|
|
263
|
+
classpath("com.google.gms:google-services:4.4.2")
|
|
264
|
+
// 华为 AGConnect。Gradle 8 / AGP 8 项目不要继续使用 1.6.0.300。
|
|
265
|
+
classpath("com.huawei.agconnect:agcp:1.9.1.301")
|
|
266
|
+
// 荣耀 Push。
|
|
226
267
|
classpath("com.hihonor.mcs:asplugin:2.0.1.300")
|
|
227
268
|
}
|
|
228
269
|
}
|
|
229
270
|
```
|
|
271
|
+
1. 请将`<AGP_VERSION>`替换为项目当前使用的 Android Gradle Plugin 版本,例如 `8.9.1`。如果项目级 `plugins {}` 块中已经声明了 `com.android.application` 版本,两个位置的 AGP 版本需要保持一致。
|
|
230
272
|
|
|
231
|
-
|
|
273
|
+
2. 请将`<KOTLIN_VERSION>` 替换为项目当前使用的 Kotlin Gradle Plugin 版本;如果项目未使用 Kotlin Android 插件,可删除该行。
|
|
232
274
|
|
|
233
|
-
|
|
275
|
+
> **注意:**
|
|
276
|
+
> 对于 Gradle 8 / AGP 8 项目,请不要继续使用 `com.huawei.agconnect:agcp:1.6.0.300`。AGP 8.0 已移除 Transform API,旧版 AGC 插件存在兼容风险,建议使用 `com.huawei.agconnect:agcp:1.9.1.301` 或更高已验证版本。若使用 Google FCM,`com.google.gms:google-services:4.4.2` 要求 AGP 7.3.0 及以上。
|
|
277
|
+
>
|
|
278
|
+
|
|
279
|
+
【Gradle 7.0 及以下】
|
|
280
|
+
|
|
281
|
+
如果您已在上一节「配置 Gradle 仓库」中按照 Gradle 7.0 或 Gradle 7.0 以下示例配置了 `buildscript > repositories` 和 `buildscript > dependencies`,可以跳过本节的项目级插件依赖配置。
|
|
282
|
+
|
|
283
|
+
如果尚未配置,请回到上一节,根据当前 Gradle 版本补充 `buildscript` 中的仓库和插件 classpath。
|
|
284
|
+
|
|
285
|
+
#### 在应用模块启用厂商插件
|
|
286
|
+
|
|
287
|
+
完成项目级插件依赖配置后,还需要在应用模块的 `build.gradle` 或 `build.gradle.kts` 中启用厂商插件。应用模块通常为 `app`。
|
|
288
|
+
|
|
289
|
+
如果应用模块中已经存在 `plugins` 块,请在现有 `plugins` 块中追加厂商插件,不要重复添加已有的 `com.android.application` 插件。
|
|
290
|
+
|
|
291
|
+
【Groovy DSL(app/build.gradle)】
|
|
292
|
+
``` groovy
|
|
293
|
+
plugins {
|
|
294
|
+
// Google FCM。
|
|
295
|
+
id 'com.google.gms.google-services'
|
|
296
|
+
// 华为 AGConnect。
|
|
297
|
+
id 'com.huawei.agconnect'
|
|
298
|
+
// 荣耀 Push。
|
|
299
|
+
id 'com.hihonor.mcs.asplugin'
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
如果您的应用级 `build.gradle` 使用 `apply plugin` 写法,也可以写成:
|
|
234
304
|
``` groovy
|
|
235
305
|
apply plugin: 'com.google.gms.google-services'
|
|
236
306
|
apply plugin: 'com.huawei.agconnect'
|
|
237
307
|
apply plugin: 'com.hihonor.mcs.asplugin'
|
|
238
308
|
```
|
|
239
309
|
|
|
240
|
-
【Kotlin DSL(build.gradle.kts)】
|
|
310
|
+
【Kotlin DSL(app/build.gradle.kts)】
|
|
241
311
|
``` kotlin
|
|
242
312
|
plugins {
|
|
313
|
+
// Google FCM。
|
|
243
314
|
id("com.google.gms.google-services")
|
|
315
|
+
// 华为 AGConnect。
|
|
244
316
|
id("com.huawei.agconnect")
|
|
317
|
+
// 荣耀 Push。
|
|
245
318
|
id("com.hihonor.mcs.asplugin")
|
|
246
319
|
}
|
|
247
320
|
```
|
|
248
321
|
|
|
249
|
-
|
|
322
|
+
如果您的应用级 `build.gradle.kts` 使用 `apply` 写法,也可以写成:
|
|
323
|
+
``` kotlin
|
|
324
|
+
apply(plugin = "com.google.gms.google-services")
|
|
325
|
+
apply(plugin = "com.huawei.agconnect")
|
|
326
|
+
apply(plugin = "com.hihonor.mcs.asplugin")
|
|
327
|
+
```
|
|
250
328
|
|
|
251
|
-
|
|
252
|
-
>
|
|
253
|
-
> 荣耀官方示例统一使用 `buildscript > dependencies > classpath` 声明 `asplugin`,未提供 `plugins {}` 块写法。如果项目级 `build.gradle.kts` 用 `plugins {}` 块声明 AGP(新建 Kotlin DSL 项目的默认方式),请在 `buildscript > dependencies` 中**额外补上** `com.android.tools.build:gradle` 和 `org.jetbrains.kotlin:kotlin-gradle-plugin` 的 classpath(原 `plugins {}` 块保留不动)。应用级 `plugins { id(...) }` 可省略版本号(由项目级 classpath 提供),或改写为 `apply plugin: "..."`。
|
|
254
|
-
>
|
|
329
|
+
完成配置后,请在 Android Studio 中单击 **Sync Now**,或选择 **File > Sync Project with Gradle Files** 触发 Gradle 同步。同步成功后,再执行构建验证。
|
|
255
330
|
|
|
256
331
|
### 集成 TIMPush 依赖
|
|
257
332
|
|
|
258
333
|
在应用模块的 `build.gradle` 或 `build.gradle.kts` 中添加 TIMPush 依赖。基础包提供 TIMPush 注册、监听和通用能力;厂商包用于对接对应厂商离线推送通道。只集成基础包而不集成目标厂商包时,设备可能无法通过该厂商通道收到离线推送。
|
|
259
334
|
|
|
260
|
-
下方示例中的 `VERSION` 均指 TIMPush SDK 的版本号(如 `8.9.7537`),不是 Android 系统版本或厂商 SDK
|
|
335
|
+
下方示例中的 `VERSION` 均指 TIMPush SDK 的版本号(如 `8.9.7537`),不是 Android 系统版本或厂商 SDK 版本。获取最新版本号请查看更新日志。
|
|
261
336
|
|
|
262
337
|
【Groovy DSL】
|
|
263
338
|
``` groovy
|
|
@@ -306,7 +381,6 @@ dependencies {
|
|
|
306
381
|
添加依赖后,请在 Android Studio 中单击 **Sync Now**,或选择 **File > Sync Project with Gradle Files** 触发 Gradle 同步。
|
|
307
382
|
|
|
308
383
|
> **注意:**
|
|
309
|
-
>
|
|
310
384
|
> `TIMPush`、`TUICore` 和各厂商通道包建议使用相同 `VERSION`,避免依赖冲突。项目已接入 IM SDK 或 TUIKit 时,也需要确认相关 SDK 版本兼容。
|
|
311
385
|
>
|
|
312
386
|
|
|
@@ -393,14 +467,16 @@ android {
|
|
|
393
467
|
|
|
394
468
|
### registerPush
|
|
395
469
|
|
|
396
|
-
registerPush
|
|
470
|
+
registerPush 用于向 TIMPush 注册当前设备的推送 token。推送 token 是厂商通道返回的设备凭证,通常由 SDK 自动处理。注册成功后,TIMPush 会为当前设备建立一个推送目标标识 `registrationID`;服务端、控制台接入测试和排查工具可以使用该标识向这台设备下发离线推送。若 App 同时接入 IM 并完成登录,也可以使用 `userID` 向该用户已建立推送关系的设备下发离线推送。
|
|
471
|
+
|
|
472
|
+
`appKey` 的取值会影响注册方式和可用的推送标识:
|
|
397
473
|
- `appKey = Push Key`:注册 TIMPush 独立推送能力。Push Key 客户端密钥。
|
|
398
474
|
|
|
399
475
|
- `appKey = null`:复用 IM 登录态注册推送,必须在 IM `login` 成功后调用。
|
|
400
476
|
|
|
401
477
|
请先根据业务场景确认调用顺序:
|
|
402
478
|
|
|
403
|
-
| <strong>场景</strong> | <strong>调用顺序</strong> | <strong
|
|
479
|
+
| <strong>场景</strong> | <strong>调用顺序</strong> | <strong>服务端可用于发送推送的目标标识</strong> | <strong>说明</strong> |
|
|
404
480
|
| --- | --- | --- | --- |
|
|
405
481
|
| 仅使用 TIMPush | App 每次冷启动后调用<br><code>registerPush(appKey = Push Key)</code> | <code>registrationID</code> | 适用于营销 / 活动 / 通知推送,不接入 IM SDK。 |
|
|
406
482
|
| IM SDK + TIMPush<br>先注册 Push 再登录 | <code>registerPush(appKey = Push Key)</code><br>→ IM <code>login</code> | 登录前:<code>registrationID</code>;<br>登录后:<code>registrationID</code> + <code>userID</code> | 适用于希望用户未登录时也能收到营销推送的场景。 |
|
|
@@ -408,8 +484,8 @@ registerPush 用于注册当前设备的推送 token。注册成功后,后台
|
|
|
408
484
|
|
|
409
485
|
> **注意:**
|
|
410
486
|
>
|
|
411
|
-
>
|
|
412
|
-
>
|
|
487
|
+
> - 如果用户退出 IM SDK,同时集成了 IM SDK + TIMPush 的场景下已建立的 `userID` 与 `registrationID` 推送关系都会失效,需要重新完成对应注册。
|
|
488
|
+
> - Chat 应用的密钥仅用于 IM 登录,不能作为 `registerPush` 的 `appKey`。
|
|
413
489
|
|
|
414
490
|
【App 冷启动注册 TIMPush(appKey 传 Push Key)】
|
|
415
491
|
|
|
@@ -433,7 +509,7 @@ public class App extends Application {
|
|
|
433
509
|
|
|
434
510
|
private void registerTIMPush() {
|
|
435
511
|
int sdkAppId = 0; // TODO: Replace with your SDKAppID.
|
|
436
|
-
String appKey = "
|
|
512
|
+
String appKey = "您的客户端密钥"; // TODO: Replace with your Push Key.
|
|
437
513
|
|
|
438
514
|
TIMPushManager.getInstance().registerPush(this, sdkAppId, appKey, new TIMPushCallback<Object>() {
|
|
439
515
|
@Override
|
|
@@ -466,7 +542,7 @@ class App : Application() {
|
|
|
466
542
|
|
|
467
543
|
private fun registerTIMPush() {
|
|
468
544
|
val sdkAppId = 0 // TODO: Replace with your SDKAppID.
|
|
469
|
-
val appKey = "
|
|
545
|
+
val appKey = "您的客户端密钥" // TODO: Replace with your Push Key.
|
|
470
546
|
|
|
471
547
|
TIMPushManager.getInstance().registerPush(this, sdkAppId, appKey, object : TIMPushCallback<Any?>() {
|
|
472
548
|
override fun onSuccess(data: Any?) {
|
|
@@ -500,14 +576,21 @@ import android.util.Log;
|
|
|
500
576
|
|
|
501
577
|
import com.tencent.imsdk.v2.V2TIMCallback;
|
|
502
578
|
import com.tencent.imsdk.v2.V2TIMManager;
|
|
503
|
-
import com.tencent.
|
|
504
|
-
import com.tencent.
|
|
579
|
+
import com.tencent.imsdk.v2.V2TIMSDKConfig;
|
|
580
|
+
import com.tencent.qcloud.tim.push.TIMPushCallback;
|
|
581
|
+
import com.tencent.qcloud.tim.push.TIMPushManager;
|
|
505
582
|
|
|
506
583
|
public void loginIMAndRegisterPush(Context context) {
|
|
507
584
|
int sdkAppId = 0; // TODO: Replace with your SDKAppID.
|
|
508
585
|
String userID = "<YOUR_USER_ID>";
|
|
509
586
|
String userSig = "<YOUR_USER_SIG>";
|
|
510
587
|
|
|
588
|
+
boolean initSuccess = V2TIMManager.getInstance().initSDK(context, sdkAppId, new V2TIMSDKConfig());
|
|
589
|
+
if (!initSuccess) {
|
|
590
|
+
Log.e("TIMPush", ">>>>> IM SDK init failed");
|
|
591
|
+
return;
|
|
592
|
+
}
|
|
593
|
+
|
|
511
594
|
V2TIMManager.getInstance().login(userID, userSig, new V2TIMCallback() {
|
|
512
595
|
@Override
|
|
513
596
|
public void onSuccess() {
|
|
@@ -539,17 +622,24 @@ import android.content.Context
|
|
|
539
622
|
import android.util.Log
|
|
540
623
|
import com.tencent.imsdk.v2.V2TIMCallback
|
|
541
624
|
import com.tencent.imsdk.v2.V2TIMManager
|
|
542
|
-
import com.tencent.
|
|
543
|
-
import com.tencent.
|
|
625
|
+
import com.tencent.imsdk.v2.V2TIMSDKConfig
|
|
626
|
+
import com.tencent.qcloud.tim.push.TIMPushCallback
|
|
627
|
+
import com.tencent.qcloud.tim.push.TIMPushManager
|
|
544
628
|
|
|
545
629
|
fun loginIMAndRegisterPush(context: Context) {
|
|
546
630
|
val sdkAppId = 0 // TODO: Replace with your SDKAppID.
|
|
547
631
|
val userID = "<YOUR_USER_ID>"
|
|
548
632
|
val userSig = "<YOUR_USER_SIG>"
|
|
549
633
|
|
|
634
|
+
val initSuccess = V2TIMManager.getInstance().initSDK(context, sdkAppId, V2TIMSDKConfig())
|
|
635
|
+
if (!initSuccess) {
|
|
636
|
+
Log.e("TIMPush", ">>>>> IM SDK init failed")
|
|
637
|
+
return
|
|
638
|
+
}
|
|
639
|
+
|
|
550
640
|
V2TIMManager.getInstance().login(userID, userSig, object : V2TIMCallback {
|
|
551
641
|
override fun onSuccess() {
|
|
552
|
-
TIMPushManager.getInstance().registerPush(context, sdkAppId, null, object : TIMPushCallback<Any
|
|
642
|
+
TIMPushManager.getInstance().registerPush(context, sdkAppId, null, object : TIMPushCallback<Any>() {
|
|
553
643
|
override fun onSuccess(data: Any?) {
|
|
554
644
|
Log.d("TIMPush", ">>>>> registerPush success, data = $data")
|
|
555
645
|
}
|
|
@@ -567,6 +657,11 @@ fun loginIMAndRegisterPush(context: Context) {
|
|
|
567
657
|
}
|
|
568
658
|
```
|
|
569
659
|
|
|
660
|
+
> **警告:**
|
|
661
|
+
>
|
|
662
|
+
> 如果您的业务仅使用即时通信 IM 聊天能力,请勿在 IM 登录前先调用 `registerPush`。否则 SDK 可能会按独立推送场景注册 Push 类型账号,并产生对应的 Push DAU。Push DAU 超出套餐额度后,可能会产生额外费用。
|
|
663
|
+
>
|
|
664
|
+
|
|
570
665
|
**验证**:
|
|
571
666
|
|
|
572
667
|
1. `registerPush` 的 `onSuccess` 回调被触发。
|
|
@@ -580,7 +675,6 @@ fun loginIMAndRegisterPush(context: Context) {
|
|
|
580
675
|
如需自定义推送标识(如使用业务侧用户 ID),可在 `registerPush` 前调用 setRegistrationID。
|
|
581
676
|
|
|
582
677
|
> **注意:**
|
|
583
|
-
>
|
|
584
678
|
> 混用场景下,自定义 `registrationID` 必须与 IM 登录使用的 `userID` 完全一致,否则会产生账号互踢导致推送丢失。
|
|
585
679
|
>
|
|
586
680
|
|
|
@@ -597,7 +691,6 @@ fun loginIMAndRegisterPush(context: Context) {
|
|
|
597
691
|
|FCM|当前腾讯云快速接入文档说明 FCM 暂不支持推送统计功能。|
|
|
598
692
|
|
|
599
693
|
> **注意:**
|
|
600
|
-
>
|
|
601
694
|
> 回执地址不配置或配置错误,都会影响触达统计。
|
|
602
695
|
>
|
|
603
696
|
|
|
@@ -620,7 +713,7 @@ fun loginIMAndRegisterPush(context: Context) {
|
|
|
620
713
|
|
|
621
714
|
【REST API 发送】
|
|
622
715
|
|
|
623
|
-
如果需要通过服务端发送推送,可参考 [
|
|
716
|
+
如果需要通过服务端发送推送,可参考 [全员/标签推送](https://cloud.tencent.com/document/product/269/100634)。
|
|
624
717
|
|
|
625
718
|
【SDK API 发送】
|
|
626
719
|
|
|
@@ -658,7 +751,7 @@ V2TIMManager.getMessageManager().sendMessage(
|
|
|
658
751
|
|
|
659
752
|
`sendMessage` 属于 IMSDK 消息发送能力。仅集成 TIMPush 的用户不需要为了验证离线推送而额外接入完整 Chat 初始化、登录和消息发送流程。
|
|
660
753
|
|
|
661
|
-
|
|
754
|
+
**验证**:App 置于后台后发送测试消息,设备能收到离线推送通知。如果手机通知栏开启权限,通知栏会弹出离线推送消息弹框。如果收不到。
|
|
662
755
|
|
|
663
756
|
## 处理通知点击跳转
|
|
664
757
|
|
|
@@ -699,7 +792,7 @@ V2TIMManager.getMessageManager().sendMessage(
|
|
|
699
792
|
|
|
700
793
|
通过 [V2TIMOfflinePushInfo](https://im.sdk.qcloud.com/doc/zh-cn/classcom_1_1tencent_1_1imsdk_1_1v2_1_1V2TIMOfflinePushInfo.html) 的 `ext` 属性携带跳转参数,再随消息一起发送。`setExt` 接收 `byte[]` 入参,业务自定义的 JSON 字符串需要先转成字节数组。
|
|
701
794
|
|
|
702
|
-
|
|
795
|
+
如果您接入了 TUIKit,TUIKit 内置的消息发送链路会自动用 `OfflinePushExtInfo` 组装 `ext`,无需手动设置。下方示例适用于自行调用 IM SDK 发送消息的场景。
|
|
703
796
|
|
|
704
797
|
【Java】
|
|
705
798
|
``` java
|
|
@@ -781,7 +874,7 @@ V2TIMManager.getMessageManager().sendMessage(
|
|
|
781
874
|
|
|
782
875
|
请在 `Application.onCreate()` 中调用 addPushListener 注册 `TIMPushListener`,并在 onNotificationClicked 中解析 `ext` 后跳转到业务页面。
|
|
783
876
|
|
|
784
|
-
以下示例只演示解析 `ext` 的核心逻辑,跳转部分用 `TODO`
|
|
877
|
+
以下示例只演示解析 `ext` 的核心逻辑,跳转部分用 `TODO` 占位,请按自身业务补充。如果您接入了 TUIKit 并使用 `OfflinePushExtInfo` 组装的 `ext`,可改为 `new Gson().fromJson(ext, OfflinePushExtInfo.class)` 解析后再跳转。
|
|
785
878
|
|
|
786
879
|
【Java】
|
|
787
880
|
``` java
|
|
@@ -876,7 +969,6 @@ class App : Application() {
|
|
|
876
969
|
**验证**:点击通知后 `onNotificationClicked` 被调用,且 `ext` 内容与发送时设置的一致。如果回调未触发,请检查:控制台点击动作是否选择了「打开应用内指定界面」并保持默认填充值、监听器是否在 `Application.onCreate()` 中注册、发送消息时是否设置了 `ext`。
|
|
877
970
|
|
|
878
971
|
> **说明:**
|
|
879
|
-
>
|
|
880
972
|
> 旧版本工程中可能仍使用 `TUICore.registerEvent` 回调或 `LocalBroadcastManager` 广播处理点击通知。这两种方式在当前版本仍可工作,但新接入用户建议优先使用 `addPushListener`。如需从旧方案迁移,删除旧的事件注册或广播注册代码,改为在 `Application.onCreate()` 中调用 `addPushListener` 即可,回调中获取到的 `ext` 内容与旧方案一致。
|
|
881
973
|
>
|
|
882
974
|
|
|
@@ -885,7 +977,6 @@ class App : Application() {
|
|
|
885
977
|
厂商离线通道通常有消息分类机制。消息分类会影响推送及时性、单设备每日接收数量、夜间展示、声音、横幅和厂商通道权限。
|
|
886
978
|
|
|
887
979
|
> **注意:**
|
|
888
|
-
>
|
|
889
980
|
> 只有 IM 聊天、订单、交易、账号变更等用户预期强、需要及时触达的消息,才建议申请或使用高优先级分类。营销、广告、活动、资讯类消息不应滥用高优分类,否则可能被厂商降级、限频或冻结权限。
|
|
890
981
|
>
|
|
891
982
|
|
|
@@ -1008,7 +1099,7 @@ pushInfo.setAndroidOPPOChannelID("your_oppo_private_channel_id");
|
|
|
1008
1099
|
- 华为/荣耀:测试包签名(debug 或 release)的 SHA-256 必须已在厂商控制台「项目设置 > 常规 > SHA 证书指纹」中添加,指纹不一致会报 `6003: certificate fingerprint error`。
|
|
1009
1100
|
|
|
1010
1101
|
#### 步骤6:确认消息分类和厂商限制
|
|
1011
|
-
-
|
|
1102
|
+
- 是否超出厂商单日推送限额(例如 vivo 运营消息每日限制、小米公信消息限额)。
|
|
1012
1103
|
|
|
1013
1104
|
- 是否在夜间发送(部分厂商运营消息夜间不下发)。
|
|
1014
1105
|
|
|
@@ -1,22 +1,15 @@
|
|
|
1
|
-
##
|
|
1
|
+
## 前提条件
|
|
2
|
+
1. 在 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/miniapp/intro/) 中开启推送服务,默认支持在线推送。
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
2. 如果您需要使用离线推送,请先完成对应原生平台的推送前提配置:请参见 [iOS 前提条件](https://cloud.tencent.com/document/product/269/100627#.E5.89.8D.E6.8F.90.E6.9D.A1.E4.BB.B6) 和 [Android 前提条件](https://cloud.tencent.com/document/product/269/100626#.E5.89.8D.E6.8F.90.E6.9D.A1.E4.BB.B6)。
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
>
|
|
7
|
-
> 在 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/miniapp/intro/) 中开启推送服务,默认支持在线推送。如果您需要使用离线推送,请您先完成厂商配置,具体操作方法可参见 厂商配置 > 微信小程序多端框架。
|
|
8
|
-
>
|
|
6
|
+
3. 微信开发者工具版本需 ≥ 1.06.2410152,您可进入 [下载地址](https://developers.weixin.qq.com/miniprogram/dev/devtools/nightly.html) 进行版本下载。
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
微信开发者工具版本需 ≥ 1.06.2410152,您可进入 [下载地址](https://developers.weixin.qq.com/miniprogram/dev/devtools/nightly.html) 进行版本下载。
|
|
13
|
-
|
|
14
|
-
## 集成腾讯云消息推送服务
|
|
8
|
+
## 操作步骤
|
|
15
9
|
|
|
16
10
|
### 步骤1: 推送插件配置
|
|
17
11
|
|
|
18
12
|
> **说明:**
|
|
19
|
-
>
|
|
20
13
|
> 在 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/nightly.html) 中开启推送服务,默认支持在线推送。
|
|
21
14
|
>
|
|
22
15
|
|
|
@@ -37,7 +30,6 @@
|
|
|
37
30
|
### 步骤2: 离线推送配置
|
|
38
31
|
|
|
39
32
|
> **说明:**
|
|
40
|
-
>
|
|
41
33
|
> 如果只使用在线推送,则无需进行厂商离线推送配置。
|
|
42
34
|
>
|
|
43
35
|
|
|
@@ -131,7 +123,6 @@
|
|
|
131
123
|
当您准备好以上文件后,可以按照描述填入相关信息:
|
|
132
124
|
|
|
133
125
|
> **说明:**
|
|
134
|
-
>
|
|
135
126
|
> **NSE 相关配置详细描述如下:**
|
|
136
127
|
>
|
|
137
128
|
> - 开启 NSE:借助 iOS 10 Service Extension 特性统计消息抵达率 及设置 APNs 离线推送的通知图片。
|
|
@@ -146,7 +137,6 @@
|
|
|
146
137
|
### 集成 JS API
|
|
147
138
|
|
|
148
139
|
> **说明:**
|
|
149
|
-
>
|
|
150
140
|
> 如何使用 npm 请查阅[官方文档](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html),此处不再赘述。
|
|
151
141
|
>
|
|
152
142
|
|
|
@@ -159,8 +149,6 @@
|
|
|
159
149
|
|
|
160
150
|
### 使用方法
|
|
161
151
|
|
|
162
|
-
将 SDKAppID 和 appKey 替换为您在 [IM 控制台 > 推送服务 Push > 概览](https://console.cloud.tencent.com/im/push-plugin-push-identifier) 获取的应用的信息。如图所示:
|
|
163
|
-
|
|
164
152
|
``` javascript
|
|
165
153
|
import Push from "@tencentcloud/donut-push"
|
|
166
154
|
const sdkAppID = 0; // 您的 SDKAppID
|
|
@@ -252,10 +240,6 @@ App({
|
|
|
252
240
|
|
|
253
241
|
需要修改 project.miniapp.json 文件才能重新构建远程基座 App,改一下应用的 version code 再进行构建即可。
|
|
254
242
|
|
|
255
|
-
### **我可以从哪里查看推送服务 Push 的相关计费信息?**
|
|
256
|
-
|
|
257
|
-
价格及购买相关问题,请参见 [推送服务计费说明](https://cloud.tencent.com/document/product/269/110762#Push)。
|
|
258
|
-
|
|
259
243
|
### **iOS 在控制台上测试工具显示“上传 token 无效,请检查”,怎么办?**
|
|
260
244
|
|
|
261
245
|
需要您检查下上传的 p12证书是否为推送证书、且 Bundle ID 应该是与主 App 一致。
|
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
## AI 集成
|
|
6
6
|
|
|
7
|
-
通过
|
|
7
|
+
通过 npx 安装 [@tencent-rtc/trtc-push-skill](https://www.npmjs.com/package/@tencent-rtc/trtc-push-skill/v/1.0.1#%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 到本地 AI IDE 中,辅助完成 TIMPush 离线推送集成。安装后,你可以直接向 AI 输入“集成 Flutter 离线推送”“帮我集成 Flutter TIMPush”等需求,AI 将根据项目类型引导你完成环境检测、厂商通道配置、凭据填写、代码接入和验证等步骤。
|
|
8
8
|
|
|
9
9
|
> **注意:**
|
|
10
|
-
>
|
|
11
10
|
> 使用 Push Skill AI 集成不是全自动流程,依然需要开发者在厂商配置控制台、腾讯云控制台等配置 Push 相关信息。具体的配置方法请参考下文相关章节。
|
|
12
11
|
>
|
|
13
12
|
|
|
@@ -217,7 +216,7 @@ iOS 如需统计推送触达数据,请在 `registerPush` 时传入 `applicatio
|
|
|
217
216
|
|
|
218
217
|
运行 App 后,过滤 `TIMPush` 关键字查看注册日志。注册成功后,调用 `getRegistrationID()` 获取当前设备推送标识。控制台或服务端发送测试消息时,可使用该值定位设备。
|
|
219
218
|
|
|
220
|
-
测试流程请参考 [Android 测试推送](https://cloud.tencent.com/document/product/269/100626#.E6.B5.8B.E8.AF.95.E6.8E.A8.E9.80.81) 和 [iOS 测试推送](https://cloud.tencent.com/document/product/269/100627#.E6.B5.8B.E8.AF.95.E6.8E.A8.E9.80.81)文档。仅集成 TIMPush 的用户,建议优先使用腾讯云控制台接入测试能力验证离线推送。
|
|
219
|
+
测试流程请参考 [Android 测试推送](https://cloud.tencent.com/document/product/269/100626#.E6.B5.8B.E8.AF.95.E6.8E.A8.E9.80.81) 和 [iOS 测试推送](https://cloud.tencent.com/document/product/269/100627#.E6.B5.8B.E8.AF.95.E6.8E.A8.E9.80.81) 文档。仅集成 TIMPush 的用户,建议优先使用腾讯云控制台接入测试能力验证离线推送。
|
|
221
220
|
|
|
222
221
|
如果您的项目已接入 IM SDK,可通过 SDK API 发送一条带离线推送参数的消息进行验证。Flutter 侧示例如下:
|
|
223
222
|
``` java
|
|
@@ -345,7 +344,6 @@ Future<void> removeTIMPushListener() async {
|
|
|
345
344
|
```
|
|
346
345
|
|
|
347
346
|
> **注意:**
|
|
348
|
-
>
|
|
349
347
|
> - `TencentCloudChatPush().registerPush` 当前仍要求传入 `onNotificationClicked` 参数,但该参数待废弃。新接入业务请不要在 `registerPush` 的 `onNotificationClicked` 中处理跳转,统一使用 `addPushListener`。
|
|
350
348
|
> - `ext` 是发送方写入的业务透传字段,建议使用 JSON 字符串,例如 `{"conversationID":"user_A","conversationType":1}`。
|
|
351
349
|
> - 若 App 冷启动后需要立即处理点击事件,建议尽早注册 `listener`,例如在登录流程完成后、业务首页初始化前完成注册。
|
|
@@ -356,11 +354,11 @@ Future<void> removeTIMPushListener() async {
|
|
|
356
354
|
|
|
357
355
|
## 收不到推送排障流程
|
|
358
356
|
|
|
359
|
-
###
|
|
357
|
+
### 步骤1:原生侧排查
|
|
360
358
|
|
|
361
359
|
如果发送测试消息后设备没有收到推送,请先按平台文档 [Android 收不到推送排障流程](https://cloud.tencent.com/document/product/269/100626#.E6.94.B6.E4.B8.8D.E5.88.B0.E6.8E.A8.E9.80.81.E6.8E.92.E9.9A.9C.E6.B5.81.E7.A8.8B) 和 [iOS 收不到推送排障流程](https://cloud.tencent.com/document/product/269/100627#.E6.94.B6.E4.B8.8D.E5.88.B0.E6.8E.A8.E9.80.81.E6.8E.92.E9.9A.9C.E6.B5.81.E7.A8.8B) 完成原生侧排查。
|
|
362
360
|
|
|
363
|
-
###
|
|
361
|
+
### 步骤2:Flutter 侧可按以下顺序补充检查
|
|
364
362
|
1. 确认 `registerPush` 返回 `code = 0`。如果返回非 0,请先根据错误码和 `errorMessage` 排查,不要只看 App 是否启动成功。
|
|
365
363
|
|
|
366
364
|
2. 注册成功后调用 `getRegistrationID()`,确认返回值非空。控制台或服务端发送测试消息时,使用的 `RegistrationID / userID` 应与这里返回的值一致。
|