Flutter集成Infobip通知后返回页异常及登录校验需求求助
关于Flutter中infobip_mobilemessaging聊天与推送通知的问题
我在Flutter项目中使用infobip_mobilemessaging: ^6.1.1实现聊天及推送通知功能,已完成以下配置:
已完成的配置
- 更新
/android/app/src/main/res/values/strings.xml文件:
<resources> <string name="infobip_application_code">application code here</string> </resources>
- 更新应用级build.gradle:
dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation platform('com.google.firebase:firebase-bom:31.0.2') implementation ('com.infobip:infobip-mobile-messaging-android-sdk:12.8.0@aar') { transitive = true } // Other dependencies }
- 更新项目级build.gradle:
buildscript { ext.kotlin_version = '1.9.0' // Set the Kotlin version repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:8.0.2' // Update this line classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.13' } }
- 编写ChatPage页面:
class ChatPage extends StatefulWidget { const ChatPage({super.key}); @override State<ChatPage> createState() => _ChatPageState(); } class _ChatPageState extends State<ChatPage> { late Future<void> _initializeChatFuture; @override void initState() { super.initState(); _initializeChatFuture = _initializeChat(); } Future<void> _initializeChat() async { await initialize(); await Future.delayed(const Duration(seconds: 2)); } Future<void> initialize() async { try { log('InfobipService initialized'); await InfobipMobilemessaging.init(mmconfiguration.Configuration( applicationCode: 'application code here', inAppChatEnabled: true, fullFeaturedInAppsEnabled: false, defaultMessageStorage: true, privacySettings: mmconfiguration.PrivacySettings( userDataPersistingDisabled: false, carrierInfoSendingDisabled: false, systemInfoSendingDisabled: false, ), )); await InfobipMobilemessaging.registerForRemoteNotifications(); InfobipMobilemessaging.on( LibraryEvent.notificationTapped, (Message message) { setState(() { AppStrings.isNotiTapped=true; }); }, ); } catch (e) { log('Error initializing Infobip Mobile Messaging: $e'); // Handle initialization error } } @override Widget build(BuildContext context) { log('AppStrings.isNotiTapped ${AppStrings.isNotiTapped}'); return Scaffold( appBar: AppBar( leading: IconButton( icon: Icon(Icons.arrow_back), onPressed: () { Navigator.pop(context); }, ), title: Text('Chat Page'), ), backgroundColor: Colors.white, body: FutureBuilder<void>( future: _initializeChatFuture, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const Center( child: CircularProgressIndicator( backgroundColor: Colors.teal, ), ); } else if (snapshot.connectionState == ConnectionState.done) { log('DONE'); WidgetsBinding.instance.addPostFrameCallback((_) { if (mounted) { Navigator.pop(context); InfobipMobilemessaging.showChat(); } }); return const Center( child: Text('Chat is loading...'), ); } else { return const Center( child: Text('Error initializing chat'), ); } }, ), ); } }
页面流程
应用页面流程为:启动页(splashscreen)→ 首页(homescreen)→ 聊天页(chatpage),从首页导航进入聊天页。
当前问题
- 从首页进入聊天页后返回,可正常回到首页;但在首页点击聊天通知打开聊天页后,返回却跳转至启动页,不符合预期;
- 应用进程被杀死后,点击通知打开聊天页,返回同样跳转至启动页。
额外需求
需要添加登录校验逻辑:用户已登录时直接打开聊天页,未登录时跳转至启动页再进入登录页。
补充发现
移除initialize方法仍可加载聊天,但移除strings.xml中的应用代码则无法加载,看过官方相关文档但不知如何应用,恳请协助解决该问题。
内容的提问来源于stack exchange,提问作者user1
相关产品推荐
相关产品推荐

