diff --git a/FlutterQA.md b/FlutterQA.md new file mode 100644 index 00000000..8f55b4d8 --- /dev/null +++ b/FlutterQA.md @@ -0,0 +1,89 @@ +iOS如何绑定deviceToken? + +```objectivec + +#import "AppDelegate.h" +// 引入环信SDK +#import + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + + + // ... + + + // // 获取UNUserNotificationCenter并申请[badge, alert, sound]权限。 + UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; + [center requestAuthorizationWithOptions: + UNAuthorizationOptionAlert | UNAuthorizationOptionBadge | UNAuthorizationOptionSound + completionHandler:^(BOOL granted, NSError * _Nullable error) { + if (granted) { + dispatch_async(dispatch_get_main_queue(), ^{ + // 注册远程推送 + [application registerForRemoteNotifications]; + }); + } + }]; + + + return YES; +} + +// 收到系统deviceToken获取成功回调 +-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ + // 将deviceToken传给环信SDK + [EMClient.sharedClient registerForRemoteNotificationsWithDeviceToken:deviceToken completion:nil]; +} + + + +@end + +``` + +```swift + +import UIKit +import Flutter +// 引入环信SDK +import HyphenateChat + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self); + + // 获取UNUserNotificationCenter并申请[badge, alert, sound]权限。 + let center = UNUserNotificationCenter.current(); + center.requestAuthorization(options: [.badge, .alert, .sound]) { granted, error in + if(granted){ + DispatchQueue.main.async { + // 注册远程推送 + application.registerForRemoteNotifications(); + } + } + } + + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } + // 收到系统deviceToken获取成功回调 + override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { + // 将deviceToken传给环信SDK + EMClient.share.registerForRemoteNotifications(withDeviceToken: deviceToken, completion: nil) + } +} + + + + +``` diff --git a/README.md b/README.md index 9c97827d..1763ea97 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ 源码地址: [Github](https://github.com/easemob/im_flutter_sdk) 任何问题可以通过 [Github Issues](https://github.com/easemob/im_flutter_sdk/issues) 提问 - +[常见问题](FlutterQA.md) ## 前期准备 @@ -159,8 +159,6 @@ class _PageState extends State implements EMConnectionListener { bool isConnected = await EMClient.getInstance.isConnected(); ``` - - ### EMChatManager #### 获取会话列表 @@ -480,27 +478,27 @@ class _PageState extends State implements EMContactManagerListener { @override void onContactAdded(String userName) { - + } @override void onContactDeleted(String? userName) { - + } @override void onContactInvited(String userName, String? reason) { - + } @override void onFriendRequestAccepted(String userName) { - + } @override void onFriendRequestDeclined(String userName) { - + } } ``` @@ -1072,7 +1070,6 @@ class _PageState extends State implements EMGroupEventListener { @override void onWhiteListRemovedFromGroup(String groupId, List members) {} } - ``` #### 同意加群申请 @@ -1421,7 +1418,6 @@ class _PageState extends State implements EMChatRoomEventListener { @override void onWhiteListRemovedFromChatRoom(String roomId, List members) {} } - ``` ### 推送 @@ -1522,10 +1518,6 @@ try { List list = await EMClient.getInstance.pushManager.getNoPushUsersFromCache(); ``` - - - - ### EMUserInfoManager #### 更新自己的用户属性 diff --git a/example/ios/Runner/AppDelegate.swift b/example/ios/Runner/AppDelegate.swift index 70693e4a..56ce1f81 100644 --- a/example/ios/Runner/AppDelegate.swift +++ b/example/ios/Runner/AppDelegate.swift @@ -1,5 +1,8 @@ + import UIKit import Flutter +// 引入环信SDK +import HyphenateChat @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { @@ -7,7 +10,27 @@ import Flutter _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { - GeneratedPluginRegistrant.register(with: self) + GeneratedPluginRegistrant.register(with: self); + + // 获取UNUserNotificationCenter并申请[badge, alert, sound]权限。 + let center = UNUserNotificationCenter.current(); + center.requestAuthorization(options: [.badge, .alert, .sound]) { granted, error in + if(granted){ + DispatchQueue.main.async { + // 注册远程推送 + application.registerForRemoteNotifications(); + } + } + } + return super.application(application, didFinishLaunchingWithOptions: launchOptions) } + // 收到系统deviceToken获取成功回调 + override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { + // 将deviceToken传给环信SDK + EMClient.share.registerForRemoteNotifications(withDeviceToken: deviceToken, completion: nil) + } } + + + diff --git a/example/lib/main.dart b/example/lib/main.dart index 1982c479..6f4a11c8 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -52,7 +52,7 @@ class EaseIMDemo extends StatelessWidget { }, child: ScreenUtilInit( designSize: Size(375, 667), - builder: () { + builder: (context) { return MaterialApp( builder: (context, child) => FlutterSmartDialog(child: child), debugShowCheckedModeBanner: false, diff --git a/example/lib/pages/chat/chat_page.dart b/example/lib/pages/chat/chat_page.dart index 09a61c00..040ab29e 100644 --- a/example/lib/pages/chat/chat_page.dart +++ b/example/lib/pages/chat/chat_page.dart @@ -447,7 +447,7 @@ class _ChatPageState extends State print('_moreCameraBtnOnTap'); var curser = await EMClient.getInstance.groupManager - .getGroupMemberListFromServer(widget.conversation.id); + .fetchMemberListFromServer(widget.conversation.id); debugPrint(curser.data.toString()); } diff --git a/example/lib/pages/conversations/conversations_page.dart b/example/lib/pages/conversations/conversations_page.dart index 07df450a..d118f89a 100644 --- a/example/lib/pages/conversations/conversations_page.dart +++ b/example/lib/pages/conversations/conversations_page.dart @@ -62,7 +62,7 @@ class ConversationPageState extends State [ PopMenuItem('创建群组'), PopMenuItem('添加好友'), - PopMenuItem('多人通话'), + // PopMenuItem('多人通话'), ], callback: (index) { if (index == 0) { diff --git a/example/lib/pages/group/joined_groups_page.dart b/example/lib/pages/group/joined_groups_page.dart index b064e794..ce5079d5 100644 --- a/example/lib/pages/group/joined_groups_page.dart +++ b/example/lib/pages/group/joined_groups_page.dart @@ -239,7 +239,7 @@ class JoinedGroupsPageState extends State { } List groups = - await EMClient.getInstance.groupManager.getJoinedGroupsFromServer( + await EMClient.getInstance.groupManager.fetchJoinedGroupsFromServer( pageSize: _pageSize, pageNum: _pageNumber, );