增加离线推送代码

This commit is contained in:
CYH 2023-08-07 14:31:31 +03:00
parent 8945d7a34a
commit 117d5a8682
6 changed files with 137 additions and 2 deletions

View File

@ -38,6 +38,7 @@
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
78B9F60BE100248DF35D1C4A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
8139D02F2A80CF4500E122A3 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -94,6 +95,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
8139D02F2A80CF4500E122A3 /* Runner.entitlements */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@ -356,6 +358,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = C97QBVP4DP;
ENABLE_BITCODE = NO;
@ -503,6 +506,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = C97QBVP4DP;
ENABLE_BITCODE = NO;
@ -544,6 +548,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = C97QBVP4DP;
ENABLE_BITCODE = NO;

View File

@ -8,6 +8,10 @@ import Flutter
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
}
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
</dict>
</plist>

View File

@ -0,0 +1,87 @@
import 'package:tencent_chat_push_for_china/model/appInfo.dart';
import 'package:tencent_chat_push_for_china/tencent_chat_push_for_china.dart';
class PushConfig{
//These `Business ID` can be found in the offline push section for each manufacturers,
// on the main page of console from Tencent Cloud IM.
// Business ID for HUAWEI
static const HWPushBuzID = 0;
// Business ID for XiaoMi
static const XMPushBuzID = 0;
// APP Info of XiaoMi
static const String XMPushAPPID = "";
static const String XMPushAPPKEY = "";
// Business ID for Meizu
static const MZPushBuzID = 0;
// APP Info of Meizu
static const String MZPushAPPID = "";
static const String MZPushAPPKEY = "";
// Business ID for Vivo
static const VIVOPushBuzID = 0;
// Business ID for OPPO
static const OPPOPushBuzID = 0;
// APP Info of OPPO
static const String OPPOPushAPPKEY = "";
static const String OPPOPushAPPSECRET = "";
static const String OPPOPushAPPID = "";
static const String OPPOChannelID = "new_message";
// Business ID for Apple APNS 39381 39382
static const ApplePushBuzID = 39381;
static final PushAppInfo appInfo = PushAppInfo(
hw_buz_id: PushConfig.HWPushBuzID,
mi_app_id: PushConfig.XMPushAPPID,
mi_app_key: PushConfig.XMPushAPPKEY,
mi_buz_id: PushConfig.XMPushBuzID,
mz_app_id: PushConfig.MZPushAPPID,
mz_app_key: PushConfig.MZPushAPPKEY,
mz_buz_id: PushConfig.MZPushBuzID,
vivo_buz_id: PushConfig.VIVOPushBuzID,
oppo_app_key: PushConfig.OPPOPushAPPKEY,
oppo_app_secret: PushConfig.OPPOPushAPPSECRET,
oppo_buz_id: PushConfig.OPPOPushBuzID,
oppo_app_id: PushConfig.OPPOPushAPPID,
apple_buz_id: PushConfig.ApplePushBuzID
);
}
class ChannelPush{
static final TimUiKitPushPlugin cPush = TimUiKitPushPlugin();
static init(PushClickAction pushClickAction) async {
// initialize the push plugin
cPush.init(
pushClickAction: pushClickAction,
appInfo: PushConfig.appInfo,
);
// create new notification channel
cPush.createNotificationChannel(
channelId: "new_message",
channelName: "chat_message",
channelDescription:
"The notification for chat message from Tencent Cloud IM"
);
// require the permission for notification
cPush.requireNotificationPermission();
}
static Future<String> getDeviceToken() async {
return cPush.getDevicePushToken();
}
}

View File

@ -2,6 +2,7 @@ import 'dart:io';
import 'dart:convert';
import 'package:circle_app/app/splash/binding.dart';
import 'package:circle_app/common/values/pushconfig.dart';
import 'package:circle_app/network/api.dart';
import 'package:circle_app/network/dio_manager.dart';
import 'package:circle_app/router/app_pages.dart';
@ -18,6 +19,9 @@ import 'package:get/get.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart';
import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
import 'package:tencent_chat_push_for_china/model/appInfo.dart';
import 'package:tencent_chat_push_for_china/tencent_chat_push_for_china.dart';
import 'app/login/login/logic.dart';
import 'app/splash/view.dart';
@ -50,6 +54,17 @@ logoutIM() async {
print(result.desc + '退出IM');
}
initPush() {
// final TimUiKitPushPlugin cPush = TimUiKitPushPlugin(
// isUseGoogleFCM: true, //
// );
// cPush.init(
// pushClickAction: pushClickAction, // STEP6讲解
// appInfo: PushConfig.appInfo, // STEP1做的appInfo
// );
}
//
pushChatPage(String userId, String imId, String userName) async {
var con = V2TimConversation(
@ -209,6 +224,8 @@ class _MyAppState extends State<MyApp> {
if (Platform.isAndroid) {
initWxApi();
}
uploadBuzIDAndToken();
loadBgImage();
super.initState();
// getLoginStyle();
@ -314,7 +331,7 @@ class _MyAppState extends State<MyApp> {
splitScreenMode: true,
builder: (context, child) {
return GetMaterialApp(
title: 'Flutter Demo',
title: '微乐园',
initialBinding: SplashBinding(),
getPages: AppPages.routes,
home: SplashPage(),
@ -323,4 +340,16 @@ class _MyAppState extends State<MyApp> {
);
});
}
//Token线
void uploadBuzIDAndToken() async {
int? businessID = await TimUiKitPushPlugin.getBuzId(PushConfig.appInfo);
String token = await ChannelPush.getDeviceToken();
if (token != "") {
coreInstance.setOfflinePushConfig(
token: token,
businessID: businessID
);
}
}
}

View File

@ -93,9 +93,11 @@ dependencies:
#event_bus:
event_bus: ^2.0.0
#安装apk
flutter_install_app: 1.3.0
# flutter_install_app: 1.3.0
#闪屏页
flutter_native_splash: 2.2.16
#腾讯离线推送
tencent_chat_push_for_china: ^2.6.2+1
dev_dependencies:
flutter_test: