tencent cloud

文档反馈

快速跑通

最后更新时间:2024-12-30 15:56:06

    步骤1:开通推送服务(Push)

    在快速跑通之前,请参照 开通服务 文档领取推送服务(Push)体验版或者购买付费套餐包。

    步骤2:集成 TIMPush 并注册推送

    说明:
    注册接口需要的参数 sdkAppId 和客户端密钥 appKey 获取路径是:控制台 > Push Basic information,具体如下截图:
    
    
    
    Android
    iOS
    Flutter
    uni-app
    React Native
    1. 集成 TIMPush
    // 版本号 “VERSION” 请前往 更新日志 中获取配置。
    implementation 'com.tencent.timpush:timpush:VERSION'
    implementation 'com.tencent.liteav.tuikit:tuicore:latest.release'
    2. 注册推送(成功后就可以收到在线推送通知了)
    int sdkAppId = 0; //您的 sdkAppId
    String appKey = ""; //客户端密钥
    TIMPushManager.getInstance().registerPush(context, sdkAppId, appKey, new TIMPushCallback() {
    @Override
    public void onSuccess(Object data) {
    }
    @Override
    public void onError(int errCode, String errMsg, Object data) {
    }
    });
    说明:
    1. 注册离线推送服务成功后,通过该接口 getRegistrationID 可获取推送唯一 ID 标识, 即 RegistrationID,然后可以根据 RegistrationID 来向指定设备推送消息;
    2. RegistrationID 设备的推送唯一标识 ID,默认注册推送服务成功后会自动生成,也支持用户自定义设置,提供用户根据 RegistrationID 来向指定设备推送消息功能,卸载重装会改变, 需要在注册推送服务之前调用。
    String registrationID = ""; //推送 ID,需要在注册推送服务之前调用
    TIMPushManager.getInstance().setRegistrationID(registrationID, new TIMPushCallback() {
    @Override
    public void onSuccess(Object data) {
    }
    @Override
    public void onError(int errCode, String errMsg, Object data) {
    }
    });
    3. 实现点击通知栏回调
    收到推送消息后点击通知栏,组件会回调该点击事件和透传离线消息。
    自定义点击跳转实现
    自定义点击跳转实现(旧方案)
    注意:
    注册回调时机建议放在应用 Application 的 oncreate() 函数中。
    TIMPushManager.getInstance().addPushListener(new TIMPushListener() {
    @Override
    public void onNotificationClicked(String ext) {
    Log.d(TAG, "onNotificationClicked =" + ext);
    // 获取 ext 自定义跳转
    }
    });
    组件会以回调或者广播形式通知应用,应用在回调中配置 App 的跳转页面即可。
    注意:
    注册回调时机建议放在应用 Application 的 oncreate() 函数中。
    // 动态注册广播
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(TUIConstants.TIMPush.NOTIFICATION_BROADCAST_ACTION);
    LocalBroadcastManager.getInstance(context).registerReceiver(localReceiver, intentFilter);
    
    //广播接收者
    public class OfflinePushLocalReceiver extends BroadcastReceiver {
    public static final String TAG = OfflinePushLocalReceiver.class.getSimpleName();
    
    @Override
    public void onReceive(Context context, Intent intent) {
    DemoLog.d(TAG, "BROADCAST_PUSH_RECEIVER intent = " + intent);
    if (intent != null) {
    String ext = intent.getStringExtra(TUIConstants.TIMPush.NOTIFICATION_EXT_KEY);
    // 获取 ext 自定义跳转
    
    } else {
    Log.e(TAG, "onReceive ext is null");
    }
    }
    }
    1. 集成 TIMPush
    支持 cocoapods 集成,您需要在 Podfile 中添加组件依赖。
    target 'YourAppName' do
    # Uncommment the next line if you're using Swift or would like to use dynamic frameworks
    use_frameworks!
    use_modular_headers!
    # Pods for Example
    pod 'TXIMSDK_Plus_iOS_XCFramework'
    # 版本号 “VERSION” 请前往 更新日志 中获取配置。
    pod 'TIMPush', 'VERSION'
    end
    执行以下命令,安装 TIMPush 组件。
    pod install # 如果无法安装 TUIKit 最新版本,执行以下命令更新本地的 CocoaPods 仓库列表。 pod repo update
    2. 注册推送(成功后就可以收到在线推送通知了)
    const int sdkAppId = 0; //您的 sdkAppId
    static const NSString *appKey = @""; //客户端密钥
    
    [TIMPushManager registerPush:sdkAppId appKey:appKey succ:^(NSData * _Nonnull deviceToken) {
    
    } fail:^(int code, NSString * _Nonnull desc) {
    
    }];
    说明:
    1. 注册离线推送服务成功后,通过该接口 getRegistrationID 可获取推送唯一 ID 标识, 即 RegistrationID,然后可以根据 RegistrationID 来向指定设备推送消息;
    2. RegistrationID 设备的推送唯一标识 ID,默认注册推送服务成功后会自动生成,也支持用户自定义设置,提供用户根据 RegistrationID 来向指定设备推送消息功能,卸载重装会改变, 需要在注册推送服务之前调用。
    NSString registrationID = @""; //推送 ID,需要在注册推送服务之前调用
    [TIMPushManager setRegistrationID:registrationID callback:^{
    }];
    3. 实现点击通知栏回调
    收到推送消息后点击通知栏,组件会回调该点击事件和透传离线消息。
    自定义点击跳转实现
    自定义点击跳转实现(旧方案)
    注意:
    注册回调时机建议放在应用 AppDelegate 的 didFinishLaunchingWithOptions 函数中。
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [TIMPushManager addPushListener:self];
    return YES;
    }
    #pragma mark - TIMPushListener
    - (void)onNotificationClicked:(NSString *)ext {
    // 获取 ext 自定义跳转
    }
    您需要在 AppDelegate.m 文件中实现 - onRemoteNotificationReceived 方法
    #pragma mark - TIMPush
    - (BOOL)onRemoteNotificationReceived:(NSString *)notice {
    //- 如果返回 YES, TIMPush 将不在执行内置的 TUIKit 离线推送解析逻辑,完全交由您自行处理;
    //NSString *ext = notice;
    //OfflinePushExtInfo *info = [OfflinePushExtInfo createWithExtString:ext];
    //return YES;
    //- 如果返回 NO,TIMPush 将继续执行内置的 TUIKit 离线推送解析逻辑,继续回调 - navigateToBuiltInChatViewController:groupID: 方法。
    return NO;
    }
    1. 集成 TIMPush
    本插件在 pub.dev 的包名为: tencent_cloud_chat_push , 您可以将其引入 pubspec.yaml 依赖目录中, 也可以执行下列命令自动安装。
    flutter pub add tencent_cloud_chat_push
    2. 注册推送(成功后就可以收到在线推送通知了)
    您可定义一个函数来接收该回调,并据此跳转至对应会话页面或您的业务页面。
    示例如下:
    void _onNotificationClicked({required String ext, String? userID, String? groupID}) { print("_onNotificationClicked: $ext, userID: $userID, groupID: $groupID"); if (userID != null || groupID != null) { // 根据 userID 或 groupID 跳转至对应 Message 页面. } else { // 根据 ext 字段, 自己写解析方式, 跳转至对应页面. } }
    
    TencentCloudChatPush().registerPush(onNotificationClicked: _onNotificationClicked, sdkAppId: 您的sdkAppId, appKey: "客户端密钥");
    说明:
    1. 注册离线推送服务成功后,通过该接口 getRegistrationID 可获取推送唯一 ID 标识, 即 RegistrationID,然后可以根据 RegistrationID 来向指定设备推送消息;
    2. RegistrationID 设备的推送唯一标识 ID,默认注册推送服务成功后会自动生成,也支持用户自定义设置,提供用户根据 RegistrationID 来向指定设备推送消息功能,卸载重装会改变, 需要在注册推送服务之前调用。
    String registrationID = ""; //推送 ID,需要在注册推送服务之前调用
    TencentCloudChatPush().setRegistrationID(registrationID: registrationID);
    3. 实现点击通知栏回调
    Android
    iOS
    Application 类继承 TencentCloudChatPushApplication
    package 替换成您自己的包名(一般 Android Studio 会自动生成) import com.tencent.chat.flutter.push.tencent_cloud_chat_push.application.TencentCloudChatPushApplication; public class MyApplication extends TencentCloudChatPushApplication { @Override public void onCreate() { super.onCreate(); } }
    说明:
    如果您已经创建了自己的 Application 为了其他用途,请直接 extends TencentCloudChatPushApplication 并保证 onCreate() 函数中,调用了 super.onCreate(); 即可。
    AppDelegate 类继承 TIMPushDelegate
    import UIKit
    import Flutter
    
    // Add these two import lines
    import TIMPush
    import tencent_cloud_chat_push
    
    // Add `, TIMPushDelegate` to the following line
    @UIApplicationMain
    @objc class AppDelegate: FlutterAppDelegate, TIMPushDelegate {
    override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
    }
    
    // Add this function
    func offlinePushCertificateID() -> Int32 {
    return TencentCloudChatPushFlutterModal.shared.offlinePushCertificateID();
    }
    
    // Add this function
    func applicationGroupID() -> String {
    return TencentCloudChatPushFlutterModal.shared.applicationGroupID()
    }
    // Add this function
    func onRemoteNotificationReceived(_ notice: String?) -> Bool {
    TencentCloudChatPushPlugin.shared.tryNotifyDartOnNotificationClickEvent(notice)
    return true
    }
    }
    1. HBuilderX 4.29 有 bug,请使用 HBuilderX 4.36 或更高版本,并升级 uni-app 腾讯云推送服务(Push)到 1.1.0 或更高版本。
    2. uni-app 腾讯云推送服务(Push)插件导入HbuilderX 中的工程。如图所示:
    
    
    
    3. 在 App.vue 中引入并注册腾讯云推送服务(Push)(成功后就可以收到在线推送通知了)
    说明:
    registerPush注册推送服务成功后,您可通过 getRegistrationID 获取推送 ID 标识, 即 RegistrationID。您可以向指定的 RegistrationID 推送消息。
    // 集成 TencentCloud-Push
    import * as Push from '@/uni_modules/TencentCloud-Push';
    const SDKAppID = 0; // 您的 SDKAppID
    const appKey = ''; // 客户端密钥
    Push.registerPush(SDKAppID, appKey, (data) => {
    console.log('registerPush ok', data);
    Push.getRegistrationID((registrationID) => {
    console.log('getRegistrationID ok', registrationID);
    });
    }, (errCode, errMsg) => {
    console.error('registerPush failed', errCode, errMsg);
    }
    );
    
    // 监听通知栏点击事件,获取推送扩展信息
    Push.addPushListener(Push.EVENT.NOTIFICATION_CLICKED, (res) => {
    // res 为推送扩展信息
    console.log('notification clicked', res);
    });
    
    // 监听在线推送
    Push.addPushListener(Push.EVENT.MESSAGE_RECEIVED, (res) => {
    // res 为消息内容
    console.log('message received', res);
    });
    
    // 监听在线推送被撤回
    Push.addPushListener(Push.EVENT.MESSAGE_REVOKED, (res) => {
    // res 为被撤回的消息 ID
    console.log('message revoked', res);
    });
    4. 使用云端证书,生成自定义基座
    单击 HBuilderX 的运行 > 运行到手机或模拟器 > 制作自定义调试基座,使用云端证书制作 Android 或 iOS 自定义调试基座。如图所示:
    
    
    1. 创建一个 React Native 项目(已有项目可忽略此步骤)
    npx @react-native-community/cli@latest init MyReactNativeApp --version 0.75.0
    2. 集成 @tencentcloud/react-native-push
    npm install @tencentcloud/react-native-push --save
    3. 注册推送
    复制下面的代码到 App.tsx,并将 SDKAppID 和 appKey 替换为您的应用的信息。
    
    import Push from '@tencentcloud/react-native-push';
    
    const SDKAppID = 0; // 您的 SDKAppID
    const appKey = ''; // 客户端密钥
    
    if (Push) {
    // 如果您需要与 Chat 的登录 userID 打通(即向此 userID 推送消息),请使用 setRegistrationID 接口
    // Push.setRegistrationID(userID, () => {
    // console.log('setRegistrationID ok', userID);
    // });
    Push.registerPush(SDKAppID, appKey, (data) => {
    console.log('registerPush ok', data);
    Push.getRegistrationID((registrationID) => {
    console.log('getRegistrationID ok', registrationID);
    });
    }, (errCode, errMsg) => {
    console.error('registerPush failed', errCode, errMsg);
    }
    );
    // 监听通知栏点击事件,获取推送扩展信息
    Push.addPushListener(Push.EVENT.NOTIFICATION_CLICKED, (res) => {
    // res 为推送扩展信息
    console.log('notification clicked', res);
    });
    // 监听在线推送
    Push.addPushListener(Push.EVENT.MESSAGE_RECEIVED, (res) => {
    // res 为消息内容
    console.log('message received', res);
    });
    
    // 监听在线推送被撤回
    Push.addPushListener(Push.EVENT.MESSAGE_REVOKED, (res) => {
    // res 为被撤回的消息 ID
    console.log('message revoked', res);
    });
    }
    4. 配置 Native Modules 和相关依赖
    Android
    iOS
    1)使用 Android Studio 打开 MyReactNativeApp/android 目录。
    2)修改项目入口文件。
    项目入口文件是 MainApplication.kt
    项目入口文件是 MainApplication.java
    ...
    import com.tencent.qcloud.rntimpush.TencentCloudPushApplication
    
    // Replace Application with TencentCloudPushApplication
    class MainApplication : TencentCloudPushApplication(), ReactApplication {
    ...
    // add TencentCloudPushPackage to the list of packages returned in ReactNativeHost's getPackages() method
    override fun getPackages(): List<ReactPackage> =
    PackageList(this).packages.apply {
    // Packages that cannot be autolinked yet can be added manually here, for example:
    // add(MyReactNativePackage())
    }
    }
    ...
    import com.tencent.qcloud.rntimpush.TencentCloudPushApplication;
    
    // Replace Application with TencentCloudPushApplication
    public class MainApplication extends TencentCloudPushApplication implements ReactApplication {
    ...
    // add TencentCloudPushPackage to the list of packages returned in ReactNativeHost's getPackages() method
    @Override
    protected List<ReactPackage> getPackages() {
    List<ReactPackage> packages = new PackageList(this).getPackages();
    // Packages that cannot be autolinked yet can be added manually here, for example:
    // packages.add(new MyReactNativePackage());
    return packages;
    }
    ...
    }
    3)以上操作都完成后,选择 File > Sync Project with Gradle Files。
    1)使用 XCode 打开 MyReactNativeApp/ios/MyReactNativeApp.xcworkspace。
    2)进入 MyReactNativeApp/ios 目录,安装 TIMPush。
    pod install
    # 如果无法安装最新版本,执行以下命令更新本地的 CocoaPods 仓库列表
    pod repo update
    3)在 App 中启用推送通知功能。打开 Xcode 项目,在 Project > Target > Capabilities 页面选择并添加 Push Notifications
    
    
    5. 在真机上运行(测试前请务必打开手机通知权限,允许应用通知。)
    从项目根目录开始,在命令提示符中运行以下命令,在设备上安装并启动您的应用程序:
    For Android:
    npm run android
    For iOS:
    npm run ios

    步骤3:指定 RegistrationID 推送

    最后,您可以在 控制台 指定 registerationID 进行在线推送测试:
    
    说明:
    1. 正式使用请参考如下方法:
    向全员或者被打标签的用户发送,详情请参见 全员/标签推送
    批量向指定 RegistrationID 发送,详情请参见 单发推送
    2. 离线通道详细参见 厂商通道 配置相关。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持