Compare commits
67 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a8942269b4 | ||
|
|
408f12eb57 | ||
|
|
875dbf5bb2 | ||
|
|
a091534d2c | ||
|
|
3263ebb46f | ||
|
|
a3752065fa | ||
|
|
fb56f7747a | ||
|
|
b534ef0fb6 | ||
|
|
91b0f4eb00 | ||
|
|
bd210e74cb | ||
|
|
0acd81bd70 | ||
|
|
6a446a7b33 | ||
|
|
9f57971ee9 | ||
|
|
29b43d03ac | ||
|
|
cade0091a7 | ||
|
|
d90bb33764 | ||
|
|
8c64af6798 | ||
|
|
c10dabc7e8 | ||
|
|
ff25636516 | ||
|
|
43d3f05d4d | ||
|
|
3b8ec30625 | ||
|
|
44fe1a3210 | ||
|
|
9b11686dac | ||
|
|
1764da125b | ||
|
|
bf4cdf0754 | ||
|
|
45cd497d94 | ||
|
|
1db776e23d | ||
|
|
98227756df | ||
|
|
da148f78e3 | ||
|
|
883627f077 | ||
|
|
50f8350987 | ||
|
|
d098a50eaa | ||
|
|
9e50ecf341 | ||
|
|
9aa861ff74 | ||
|
|
cfadcc5e35 | ||
|
|
8b4b21e18d | ||
|
|
2814122ba4 | ||
|
|
2e94254192 | ||
|
|
a9573dbc63 | ||
|
|
92dd3adad5 | ||
|
|
ebae12f11d | ||
|
|
0dec034a55 | ||
|
|
2b3f062e5c | ||
|
|
a4b52f5895 | ||
|
|
bf9cd3ca21 | ||
|
|
0e1473ff0f | ||
|
|
7e1969d8ad | ||
|
|
e6b479726b | ||
|
|
2aec080e2f | ||
|
|
0ef41147fd | ||
|
|
cd506801cf | ||
|
|
2cafa6bab8 | ||
|
|
ceba9e827f | ||
|
|
4fef487562 | ||
|
|
dc61665f13 | ||
|
|
67251ae7ea | ||
|
|
908d7dd7e7 | ||
|
|
d07495fff6 | ||
|
|
2f8b019d83 | ||
|
|
4a72a37e2b | ||
|
|
b6a71d0b6f | ||
|
|
627ee54a67 | ||
|
|
cc6d164985 | ||
|
|
29b66de9bf | ||
|
|
d419351170 | ||
|
|
8cd7278b50 | ||
|
|
46cc7ff229 |
40
.idea/libraries/Dart_SDK.xml
generated
@@ -1,25 +1,27 @@
|
|||||||
<component name="libraryTable">
|
<component name="libraryTable">
|
||||||
<library name="Dart SDK">
|
<library name="Dart SDK">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/async" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/async" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/cli" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/cli" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/collection" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/collection" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/convert" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/convert" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/core" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/core" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/developer" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/developer" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/ffi" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/ffi" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/html" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/html" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/indexed_db" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/indexed_db" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/io" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/io" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/isolate" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/isolate" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/js" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/js" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/js_util" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/js_interop" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/math" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/js_interop_unsafe" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/mirrors" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/js_util" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/svg" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/math" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/typed_data" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/mirrors" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/web_audio" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/svg" />
|
||||||
<root url="file://$USER_HOME$/Development/flutter/bin/cache/dart-sdk/lib/web_gl" />
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/typed_data" />
|
||||||
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/web_audio" />
|
||||||
|
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/web_gl" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC />
|
<JAVADOC />
|
||||||
<SOURCES />
|
<SOURCES />
|
||||||
|
|||||||
1
.idea/misc.xml
generated
@@ -1,4 +1,3 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="FrameworkDetectionExcludesConfiguration">
|
<component name="FrameworkDetectionExcludesConfiguration">
|
||||||
<type id="android" />
|
<type id="android" />
|
||||||
|
|||||||
52
CHANGELOG.md
@@ -1,3 +1,55 @@
|
|||||||
|
## 3.8.1+2
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1)
|
||||||
|
|
||||||
|
## 3.8.1+1
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1)
|
||||||
|
|
||||||
|
## 3.8.1
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1)
|
||||||
|
|
||||||
|
## 3.8.1-rc.0
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1-rc.0)
|
||||||
|
|
||||||
|
## 3.8.0
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.0)
|
||||||
|
|
||||||
|
## 3.8.0-rc.16
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.0-rc.16)
|
||||||
|
|
||||||
|
## 3.5.1
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.5.1)
|
||||||
|
|
||||||
|
## 3.5.1-alpha.7
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.5.1-alpha.7)
|
||||||
|
|
||||||
|
## 3.5.1-alpha.2
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.5.1-alpha.2)
|
||||||
|
|
||||||
|
## 3.5.0-rc.1
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.5.0-rc.1)
|
||||||
|
|
||||||
|
## 3.4.0+1
|
||||||
|
|
||||||
|
- Adjust some fields and APIs.
|
||||||
|
|
||||||
|
## 3.4.0
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.4.0)
|
||||||
|
|
||||||
|
## 3.3.0
|
||||||
|
|
||||||
|
- [Bug fixes and performance enhancements.](https://github.com/OpenIMSDK/openim-sdk-core/releases/tag/v3.3.0)
|
||||||
|
|
||||||
## 3.0.0
|
## 3.0.0
|
||||||
|
|
||||||
- The super update is not compatible with the previous version
|
- The super update is not compatible with the previous version
|
||||||
|
|||||||
170
README.md
@@ -1,18 +1,158 @@
|
|||||||
# flutter_openim_sdk
|
# Flutter Client SDK for OpenIM 👨💻💬
|
||||||
<img src="https://github.com/OpenIMSDK/OpenIM-Docs/blob/main/docs/images/WechatIMG20.jpeg" alt="image" style="width: 350px; " />
|
|
||||||
|
|
||||||
[](https://pub.flutter-io.cn/packages/flutter_openim_sdk)
|
Use this SDK to add instant messaging capabilities to your Flutter app. By connecting to a self-hosted [OpenIM](https://www.openim.online/) server, you can quickly integrate instant messaging capabilities into your app with just a few lines of code.
|
||||||
[](https://pub.dev/packages/flutter_openim_sdk)
|
|
||||||
[](https://github.com/OpenIMSDK/Open-IM-SDK-Flutter/blob/main/LICENSE)
|
|
||||||
|
|
||||||
A flutter im plugin for android and ios.
|
|
||||||
|
|
||||||
#### [demo open source code](https://github.com/OpenIMSDK/Open-IM-Flutter-Demo.git) | [UI library source code](https://github.com/hrxiang/flutter_openim_widget.git)
|
|
||||||
|
|
||||||
Scan the QR code below to experience the SDK call example Demo
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
# [SDK Documents](https://doc.rentsoft.cn/sdks/quickstart/flutter)
|
|
||||||
|
|
||||||
|
|
||||||
|
The underlying SDK core is implemented in [OpenIM SDK Core](https://github.com/openimsdk/openim-sdk-core). Using [gomobile](https://github.com/golang/mobile), it can be compiled into an AAR file for Android integration. Android interacts with the [OpenIM SDK Core](https://github.com/openimsdk/openim-sdk-core) through JSON, and the SDK exposes a re-encapsulated API for easy usage. In terms of data storage, Android utilizes the SQLite layer provided internally by the [OpenIM SDK Core](https://github.com/openimsdk/openim-sdk-core).
|
||||||
|
|
||||||
|
The underlying SDK core is implemented in [OpenIM SDK Core](https://github.com/openimsdk/openim-sdk-core). Using [gomobile](https://github.com/golang/mobile), it can be compiled into an XCFramework for iOS integration. iOS interacts with the [OpenIM SDK Core](https://github.com/openimsdk/openim-sdk-core) through JSON, and the SDK exposes a re-encapsulated API for easy usage. In terms of data storage, iOS utilizes the SQLite layer provided internally by the [OpenIM SDK Core](https://github.com/openimsdk/openim-sdk-core).
|
||||||
|
|
||||||
|
Based on the above AAR and XCFramework packages, the IM SDK for Flutter is encapsulated through the Flutter plug-in.
|
||||||
|
|
||||||
|
## Documentation 📚
|
||||||
|
|
||||||
|
Visit [https://docs.openim.io/](https://docs.openim.io/) for detailed documentation and guides.
|
||||||
|
|
||||||
|
For the SDK reference, see [https://docs.openim.io/sdks/quickstart/flutter](https://docs.openim.io/sdks/quickstart/flutter).
|
||||||
|
|
||||||
|
## Installation 💻
|
||||||
|
### Adding Dependencies
|
||||||
|
```dart
|
||||||
|
flutter_openim_sdk: lastest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage 🚀
|
||||||
|
|
||||||
|
The following examples demonstrate how to use the SDK.
|
||||||
|
### Importing the SDK
|
||||||
|
|
||||||
|
```dart
|
||||||
|
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||||
|
```
|
||||||
|
### Initialize
|
||||||
|
```
|
||||||
|
final success = await OpenIM.iMManager.initSDK(
|
||||||
|
platform: 0, // Platform, referring to the IMPlatform class.
|
||||||
|
apiAddr: "", // SDK's API interface address.
|
||||||
|
wsAddr: "", // SDK's WebSocket address.
|
||||||
|
dataDir: "", // Data storage path. For example, you can use getApplicationDocumentsDirectory() to get a path.
|
||||||
|
logLevel: 6, // Log level (default value is 6).
|
||||||
|
listener: OnConnectListener(
|
||||||
|
onConnectSuccess: () {
|
||||||
|
// Successfully connected to the server.
|
||||||
|
},
|
||||||
|
onConnecting: () {
|
||||||
|
// Connecting to the server, suitable for showing a "Connecting" status on the UI.
|
||||||
|
},
|
||||||
|
onConnectFailed: (code, errorMsg) {
|
||||||
|
// Failed to connect to the server, you can notify the user that the current network connection is not available.
|
||||||
|
},
|
||||||
|
onUserSigExpired: () {
|
||||||
|
// User's login token (UserSig) has expired, prompting the user to log in again with a new token.
|
||||||
|
},
|
||||||
|
onKickedOffline: () {
|
||||||
|
// The current user has been kicked offline, and you can prompt the user to log in again with a message like "You have been logged in on another device. Do you want to log in again?"
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
```
|
||||||
|
### Logging In and Listening for Connection Status
|
||||||
|
|
||||||
|
> Note1: You need to [deploy](https://github.com/openimsdk/open-im-server#rocket-quick-start) OpenIM Server first, the default port of OpenIM Server is 10001, 10002.
|
||||||
|
> Note2: You need to set up the listeners first and then log in.
|
||||||
|
|
||||||
|
|
||||||
|
```dart
|
||||||
|
// Set listener
|
||||||
|
OpenIM.iMManager
|
||||||
|
//
|
||||||
|
..userManager.setUserListener(OnUserListener(
|
||||||
|
))
|
||||||
|
// Add message listener (remove when not in use)
|
||||||
|
..messageManager.setAdvancedMsgListener(OnAdvancedMsgListener(
|
||||||
|
))
|
||||||
|
|
||||||
|
// Set up message sending progress listener
|
||||||
|
..messageManager.setMsgSendProgressListener(OnMsgSendProgressListener(
|
||||||
|
))
|
||||||
|
..messageManager.setCustomBusinessListener(
|
||||||
|
)
|
||||||
|
// Set up friend relationship listener
|
||||||
|
..friendshipManager.setFriendshipListener(OnFriendshipListener(
|
||||||
|
))
|
||||||
|
|
||||||
|
// Set up conversation listener
|
||||||
|
..conversationManager.setConversationListener(OnConversationListener(
|
||||||
|
))
|
||||||
|
|
||||||
|
// Set up group listener
|
||||||
|
..groupManager.setGroupListener(OnGroupListener(
|
||||||
|
));
|
||||||
|
|
||||||
|
// Retrieve the profile of the currently logged-in user
|
||||||
|
final userInfo = await OpenIM.iMManager.login(
|
||||||
|
userID: "", // userID is obtained from your own business server
|
||||||
|
token: "", // The token should be acquired by your business server by exchanging with OpenIM server based on a secret key
|
||||||
|
);
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
To log into the IM server, you need to create an account and obtain a user ID and token. Refer to the [access token documentation](https://doc.rentsoft.cn/restapi/userManagement/userRegister) for details.
|
||||||
|
|
||||||
|
### Receiving and Sending Messages 💬
|
||||||
|
|
||||||
|
OpenIM makes it easy to send and receive messages. By default, there is no restriction on having a friend relationship to send messages (although you can configure other policies on the server). If you know the user ID of the recipient, you can conveniently send a message to them.
|
||||||
|
|
||||||
|
```dart
|
||||||
|
//Send
|
||||||
|
OpenIM.iMManager.messageManager.sendMessage(
|
||||||
|
message: await OpenIM.iMManager.messageManager.createTextMessage(
|
||||||
|
text: 'hello openim',
|
||||||
|
),
|
||||||
|
userID: userID
|
||||||
|
).catchError((error, _){
|
||||||
|
// Message sent successfully ✉️
|
||||||
|
|
||||||
|
} )
|
||||||
|
.whenComplete(() {
|
||||||
|
// Failed to send message ❌
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
//Receive
|
||||||
|
OpenIM.iMManager.messageManager.setAdvancedMsgListener(OnAdvancedMsgListener(
|
||||||
|
onRecvNewMessage:(Message msg) {
|
||||||
|
// Received new message 📨
|
||||||
|
|
||||||
|
}
|
||||||
|
))
|
||||||
|
```
|
||||||
|
|
||||||
|
## Examples 🌟
|
||||||
|
|
||||||
|
You can find a demo Flutter app that uses the SDK in the [open-im-flutter-demo](https://github.com/openimsdk/open-im-flutter-demo) repository.
|
||||||
|
|
||||||
|
|
||||||
|
## Community :busts_in_silhouette:
|
||||||
|
|
||||||
|
- 📚 [OpenIM Community](https://github.com/OpenIMSDK/community)
|
||||||
|
- 💕 [OpenIM Interest Group](https://github.com/Openim-sigs)
|
||||||
|
- 🚀 [Join our Slack community](https://join.slack.com/t/openimsdk/shared_invite/zt-2ijy1ys1f-O0aEDCr7ExRZ7mwsHAVg9A)
|
||||||
|
- :eyes: [Join our wechat (微信群)](https://openim-1253691595.cos.ap-nanjing.myqcloud.com/WechatIMG20.jpeg)
|
||||||
|
|
||||||
|
## Community Meetings :calendar:
|
||||||
|
|
||||||
|
We want anyone to get involved in our community and contributing code, we offer gifts and rewards, and we welcome you to join us every Thursday night.
|
||||||
|
|
||||||
|
Our conference is in the [OpenIM Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q) 🎯, then you can search the Open-IM-Server pipeline to join
|
||||||
|
|
||||||
|
We take notes of each [biweekly meeting](https://github.com/orgs/OpenIMSDK/discussions/categories/meeting) in [GitHub discussions](https://github.com/openimsdk/open-im-server/discussions/categories/meeting), Our historical meeting notes, as well as replays of the meetings are available at [Google Docs :bookmark_tabs:](https://docs.google.com/document/d/1nx8MDpuG74NASx081JcCpxPgDITNTpIIos0DS6Vr9GU/edit?usp=sharing).
|
||||||
|
|
||||||
|
## Who are using OpenIM :eyes:
|
||||||
|
|
||||||
|
Check out our [user case studies](https://github.com/OpenIMSDK/community/blob/main/ADOPTERS.md) page for a list of the project users. Don't hesitate to leave a [📝comment](https://github.com/openimsdk/open-im-server/issues/379) and share your use case.
|
||||||
|
|
||||||
|
## License :page_facing_up:
|
||||||
|
|
||||||
|
OpenIM is licensed under the Apache 2.0 license. See [LICENSE](https://github.com/openimsdk/open-im-server/tree/main/LICENSE) for the full license text.
|
||||||
|
|||||||
1777
README.zh-cn.md
@@ -3,7 +3,6 @@ version '1.0'
|
|||||||
|
|
||||||
def dir = getCurrentProjectDir()
|
def dir = getCurrentProjectDir()
|
||||||
|
|
||||||
// 将aar放到libs,本地仓库替换远程仓库
|
|
||||||
def getCurrentProjectDir() {
|
def getCurrentProjectDir() {
|
||||||
String result = ""
|
String result = ""
|
||||||
rootProject.allprojects { project ->
|
rootProject.allprojects { project ->
|
||||||
@@ -21,15 +20,16 @@ buildscript {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.5.4'
|
classpath 'com.android.tools.build:gradle:7.3.1'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rootProject.allprojects {
|
rootProject.allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
// 将aar放到libs,本地仓库替换远程仓库
|
maven {
|
||||||
// maven { url "$dir/libs" }
|
url 'http://192.168.77.132:8081/repository/mvn2-group'
|
||||||
maven { url 'https://open-im-online.rentsoft.cn:51000/repository/maven2/' }
|
allowInsecureProtocol true
|
||||||
|
}
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
@@ -42,6 +42,9 @@ android {
|
|||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
|
ndk {
|
||||||
|
abiFilters "arm64-v8a","x86" // 根据需要添加其他 ABI
|
||||||
|
}
|
||||||
}
|
}
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
@@ -50,7 +53,5 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// 本地依赖,现将aar复制到libs/io/openim/core-sdk/0.0.1/ 下,命名core-sdk-0.0.1.aar
|
implementation 'com.openim:sdkcore:1.0.0'
|
||||||
// implementation 'io.openim:core-sdk:0.0.1@aar'
|
|
||||||
implementation 'io.openim:core-sdk:3.2.1@aar'
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
|
#Tue Nov 12 14:22:37 CST 2024
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
|
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.4-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import io.openim.flutter_openim_sdk.manager.GroupManager;
|
|||||||
import io.openim.flutter_openim_sdk.manager.IMManager;
|
import io.openim.flutter_openim_sdk.manager.IMManager;
|
||||||
import io.openim.flutter_openim_sdk.manager.MessageManager;
|
import io.openim.flutter_openim_sdk.manager.MessageManager;
|
||||||
import io.openim.flutter_openim_sdk.manager.UserManager;
|
import io.openim.flutter_openim_sdk.manager.UserManager;
|
||||||
|
import io.openim.flutter_openim_sdk.manager.ChannelManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FlutterOpenimSdkPlugin
|
* FlutterOpenimSdkPlugin
|
||||||
@@ -42,6 +42,7 @@ public class FlutterOpenimSdkPlugin implements FlutterPlugin, MethodCallHandler,
|
|||||||
private static MessageManager messageManager;
|
private static MessageManager messageManager;
|
||||||
private static ConversationManager conversationManager;
|
private static ConversationManager conversationManager;
|
||||||
private static GroupManager groupManager;
|
private static GroupManager groupManager;
|
||||||
|
private static ChannelManager channelManager;
|
||||||
private static Activity activity;
|
private static Activity activity;
|
||||||
private static Context context;
|
private static Context context;
|
||||||
private ConnectivityListener connectivityListener;
|
private ConnectivityListener connectivityListener;
|
||||||
@@ -55,6 +56,8 @@ public class FlutterOpenimSdkPlugin implements FlutterPlugin, MethodCallHandler,
|
|||||||
FlutterOpenimSdkPlugin.messageManager = new MessageManager();
|
FlutterOpenimSdkPlugin.messageManager = new MessageManager();
|
||||||
FlutterOpenimSdkPlugin.conversationManager = new ConversationManager();
|
FlutterOpenimSdkPlugin.conversationManager = new ConversationManager();
|
||||||
FlutterOpenimSdkPlugin.groupManager = new GroupManager();
|
FlutterOpenimSdkPlugin.groupManager = new GroupManager();
|
||||||
|
FlutterOpenimSdkPlugin.channelManager = new ChannelManager();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,42 +37,6 @@ public class OnAdvancedMsgListener implements open_im_sdk_callback.OnAdvancedMsg
|
|||||||
CommonUtil.emitEvent("advancedMsgListener", "onRecvC2CReadReceipt", values);
|
CommonUtil.emitEvent("advancedMsgListener", "onRecvC2CReadReceipt", values);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRecvGroupReadReceipt(String s) {
|
|
||||||
final Map<String, String> values = new ArrayMap<>();
|
|
||||||
values.put("id", id);
|
|
||||||
values.put("groupMsgReceiptList", s);
|
|
||||||
CommonUtil.emitEvent("advancedMsgListener", "onRecvGroupReadReceipt", values);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRecvMessageExtensionsAdded(String s, String s1) {
|
|
||||||
final Map<String, String> values = new ArrayMap<>();
|
|
||||||
values.put("id", id);
|
|
||||||
values.put("msgID", s);
|
|
||||||
values.put("reactionExtensionList", s1);
|
|
||||||
CommonUtil.emitEvent("advancedMsgListener", "onRecvMessageExtensionsAdded", values);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRecvMessageExtensionsChanged(String s, String s1) {
|
|
||||||
final Map<String, String> values = new ArrayMap<>();
|
|
||||||
values.put("id", id);
|
|
||||||
values.put("msgID", s);
|
|
||||||
values.put("reactionExtensionList", s1);
|
|
||||||
CommonUtil.emitEvent("advancedMsgListener", "onRecvMessageExtensionsChanged", values);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRecvMessageExtensionsDeleted(String s, String s1) {
|
|
||||||
final Map<String, String> values = new ArrayMap<>();
|
|
||||||
values.put("id", id);
|
|
||||||
values.put("msgID", s);
|
|
||||||
values.put("reactionExtensionKeyList", s1);
|
|
||||||
CommonUtil.emitEvent("advancedMsgListener", "onRecvMessageExtensionsDeleted", values);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRecvNewMessage(String s) {
|
public void onRecvNewMessage(String s) {
|
||||||
final Map<String, String> values = new ArrayMap<>();
|
final Map<String, String> values = new ArrayMap<>();
|
||||||
@@ -88,4 +52,12 @@ public class OnAdvancedMsgListener implements open_im_sdk_callback.OnAdvancedMsg
|
|||||||
values.put("message", s);
|
values.put("message", s);
|
||||||
CommonUtil.emitEvent("advancedMsgListener", "onRecvOfflineNewMessage", values);
|
CommonUtil.emitEvent("advancedMsgListener", "onRecvOfflineNewMessage", values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRecvOnlineOnlyMessage(String s) {
|
||||||
|
final Map<String, String> values = new ArrayMap<>();
|
||||||
|
values.put("id", id);
|
||||||
|
values.put("message", s);
|
||||||
|
CommonUtil.emitEvent("advancedMsgListener", "onRecvOnlineOnlyMessage", values);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,13 +19,15 @@ public class OnBaseListener implements Base {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(int l, String s) {
|
public void onError(int l, String s) {
|
||||||
Log.i("F-OpenIMSDK(native call flutter)", "method: 【 " + call.method + " 】, onError: { code:" + l + ", message:" + s + "}");
|
String threadName = Thread.currentThread().getName();
|
||||||
|
Log.i("F-OpenIMSDK(native call flutter)", "thread: " + threadName + " method: 【 " + call.method + " 】, onError: { code:" + l + ", message:" + s + "}");
|
||||||
CommonUtil.runMainThreadReturnError(result, l, s, null);
|
CommonUtil.runMainThreadReturnError(result, l, s, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(String s) {
|
public void onSuccess(String s) {
|
||||||
Log.i("F-OpenIMSDK(native call flutter)", "method: 【 " + call.method + " 】, onSuccess: " + s);
|
String threadName = Thread.currentThread().getName();
|
||||||
|
Log.i("F-OpenIMSDK(native call flutter)", "thread: " + threadName + " method: 【 " + call.method + " 】, onSuccess: " + s);
|
||||||
CommonUtil.runMainThreadReturn(result, s);
|
CommonUtil.runMainThreadReturn(result, s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package io.openim.flutter_openim_sdk.listener;
|
||||||
|
|
||||||
|
import io.openim.flutter_openim_sdk.util.CommonUtil;
|
||||||
|
|
||||||
|
public class OnChannelListener implements open_im_sdk_callback.OnChannelListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChannelDismissed(String s) {
|
||||||
|
CommonUtil.emitEvent("channelListener", "onChannelDismissed", s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChannelInfoChanged(String s) {
|
||||||
|
CommonUtil.emitEvent("channelListener", "onChannelInfoChanged", s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChannelMemberAdded(String s) {
|
||||||
|
CommonUtil.emitEvent("channelListener", "onChannelMemberAdded", s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChannelMemberDeleted(String s) {
|
||||||
|
CommonUtil.emitEvent("channelListener", "onChannelMemberDeleted", s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChannelMemberInfoChanged(String s) {
|
||||||
|
CommonUtil.emitEvent("channelListener", "onChannelMemberInfoChanged", s);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -31,4 +31,9 @@ public class OnConnListener implements open_im_sdk_callback.OnConnListener {
|
|||||||
public void onUserTokenExpired() {
|
public void onUserTokenExpired() {
|
||||||
CommonUtil.emitEvent("connectListener", "onUserTokenExpired", null);
|
CommonUtil.emitEvent("connectListener", "onUserTokenExpired", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUserTokenInvalid(String s) {
|
||||||
|
CommonUtil.emitEvent("connectListener", "onUserTokenInvalid", s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,24 +10,34 @@ public class OnConversationListener implements open_im_sdk_callback.OnConversati
|
|||||||
CommonUtil.emitEvent("conversationListener", "onConversationChanged", s);
|
CommonUtil.emitEvent("conversationListener", "onConversationChanged", s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConversationUserInputStatusChanged(String s) {
|
||||||
|
CommonUtil.emitEvent("conversationListener", "onConversationUserInputStatusChanged", s);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNewConversation(String s) {
|
public void onNewConversation(String s) {
|
||||||
CommonUtil.emitEvent("conversationListener", "onNewConversation", s);
|
CommonUtil.emitEvent("conversationListener", "onNewConversation", s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSyncServerFailed() {
|
public void onSyncServerFailed(boolean reinstalled) {
|
||||||
CommonUtil.emitEvent("conversationListener", "onSyncServerFailed", null);
|
CommonUtil.emitEvent("conversationListener", "onSyncServerFailed", reinstalled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSyncServerFinish() {
|
public void onSyncServerFinish(boolean reinstalled) {
|
||||||
CommonUtil.emitEvent("conversationListener", "onSyncServerFinish", null);
|
CommonUtil.emitEvent("conversationListener", "onSyncServerFinish", reinstalled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSyncServerStart() {
|
public void onSyncServerStart(boolean reinstalled) {
|
||||||
CommonUtil.emitEvent("conversationListener", "onSyncServerStart", null);
|
CommonUtil.emitEvent("conversationListener", "onSyncServerStart", reinstalled);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSyncServerProgress(long progress) {
|
||||||
|
CommonUtil.emitEvent("conversationListener", "onSyncServerProgress", progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,30 +1,30 @@
|
|||||||
package io.openim.flutter_openim_sdk.listener;
|
//package io.openim.flutter_openim_sdk.listener;
|
||||||
|
//
|
||||||
import io.openim.flutter_openim_sdk.util.CommonUtil;
|
//import io.openim.flutter_openim_sdk.util.CommonUtil;
|
||||||
|
//
|
||||||
public class OnListenerForService implements open_im_sdk_callback.OnListenerForService {
|
//public class OnListenerForService implements open_im_sdk_callback.OnListenerForService {
|
||||||
@Override
|
// @Override
|
||||||
public void onFriendApplicationAccepted(String s) {
|
// public void onFriendApplicationAccepted(String s) {
|
||||||
CommonUtil.emitEvent("listenerForService", "onFriendApplicationAccepted", s);
|
// CommonUtil.emitEvent("listenerForService", "onFriendApplicationAccepted", s);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public void onFriendApplicationAdded(String s) {
|
// public void onFriendApplicationAdded(String s) {
|
||||||
CommonUtil.emitEvent("listenerForService", "onFriendApplicationAdded", s);
|
// CommonUtil.emitEvent("listenerForService", "onFriendApplicationAdded", s);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public void onGroupApplicationAccepted(String s) {
|
// public void onGroupApplicationAccepted(String s) {
|
||||||
CommonUtil.emitEvent("listenerForService", "onGroupApplicationAccepted", s);
|
// CommonUtil.emitEvent("listenerForService", "onGroupApplicationAccepted", s);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public void onGroupApplicationAdded(String s) {
|
// public void onGroupApplicationAdded(String s) {
|
||||||
CommonUtil.emitEvent("listenerForService", "onGroupApplicationAdded", s);
|
// CommonUtil.emitEvent("listenerForService", "onGroupApplicationAdded", s);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public void onRecvNewMessage(String s) {
|
// public void onRecvNewMessage(String s) {
|
||||||
CommonUtil.emitEvent("listenerForService", "onRecvNewMessage", s);
|
// CommonUtil.emitEvent("listenerForService", "onRecvNewMessage", s);
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
package io.openim.flutter_openim_sdk.listener;
|
|
||||||
|
|
||||||
import io.openim.flutter_openim_sdk.util.CommonUtil;
|
|
||||||
|
|
||||||
public class OnMessageKvInfoListener implements open_im_sdk_callback.OnMessageKvInfoListener {
|
|
||||||
|
|
||||||
// 经过聚合后的kv,计算了总数,判断了是否包含自己
|
|
||||||
@Override
|
|
||||||
public void onMessageKvInfoChanged(String s) {
|
|
||||||
CommonUtil.emitEvent("messageKvInfoListener", "onMessageKvInfoChanged", s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package io.openim.flutter_openim_sdk.listener;
|
||||||
|
|
||||||
|
import android.util.ArrayMap;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import io.flutter.plugin.common.MethodCall;
|
||||||
|
import io.flutter.plugin.common.MethodChannel;
|
||||||
|
import io.openim.flutter_openim_sdk.util.CommonUtil;
|
||||||
|
import open_im_sdk_callback.UploadLogProgress;
|
||||||
|
|
||||||
|
public class OnUploadLogsListener implements UploadLogProgress {
|
||||||
|
final private MethodChannel.Result result;
|
||||||
|
|
||||||
|
public OnUploadLogsListener(MethodChannel.Result result, MethodCall call) {
|
||||||
|
this.result = result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProgress(long current, long size) {
|
||||||
|
final Map<String, Object> values = new ArrayMap<>();
|
||||||
|
values.put("current", current);
|
||||||
|
values.put("size", size);
|
||||||
|
CommonUtil.emitEvent("uploadLogsListener", "onProgress", values);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,4 +13,19 @@ public class OnUserListener implements open_im_sdk_callback.OnUserListener {
|
|||||||
public void onUserStatusChanged(String s) {
|
public void onUserStatusChanged(String s) {
|
||||||
CommonUtil.emitEvent("userListener", "onUserStatusChanged", s);
|
CommonUtil.emitEvent("userListener", "onUserStatusChanged", s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUserCommandAdd(String s) {
|
||||||
|
CommonUtil.emitEvent("userListener", "onUserCommandAdd", s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUserCommandDelete(String s) {
|
||||||
|
CommonUtil.emitEvent("userListener", "onUserCommandDelete", s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUserCommandUpdate(String s) {
|
||||||
|
CommonUtil.emitEvent("userListener", "onUserCommandUpdate", s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,103 @@
|
|||||||
|
package io.openim.flutter_openim_sdk.manager;
|
||||||
|
|
||||||
|
import io.flutter.plugin.common.MethodCall;
|
||||||
|
import io.flutter.plugin.common.MethodChannel;
|
||||||
|
import io.openim.flutter_openim_sdk.listener.OnBaseListener;
|
||||||
|
import io.openim.flutter_openim_sdk.listener.OnChannelListener;
|
||||||
|
import open_im_sdk.Open_im_sdk;
|
||||||
|
|
||||||
|
public class ChannelManager extends BaseManager {
|
||||||
|
|
||||||
|
public void setChannelListener(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.setChannelListener(new OnChannelListener());
|
||||||
|
|
||||||
|
result.success(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void getChannelMembersInfo(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.getSpecifiedChannelMembersInfo(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "channelID"),
|
||||||
|
jsonValue(methodCall, "userIDList")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getChannelMemberList(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.getChannelMemberList(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "channelID"),
|
||||||
|
value(methodCall, "filter"),
|
||||||
|
value(methodCall, "offset"),
|
||||||
|
value(methodCall, "count")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void getChannelsInfo(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.getSpecifiedChannelsInfo(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
jsonValue(methodCall, "channelIDList")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void joinChannel(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.joinChannel(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "channelID"),
|
||||||
|
value(methodCall, "reason"),
|
||||||
|
value(methodCall, "joinSource"),
|
||||||
|
value(methodCall, "ex")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void quitChannel(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.quitChannel(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "channelID")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void changeChannelMute(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.changeChannelMute(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "channelID"),
|
||||||
|
value(methodCall, "mute")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void changeChannelMemberMute(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.changeChannelMemberMute(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "channelID"),
|
||||||
|
value(methodCall, "userID"),
|
||||||
|
int2long(methodCall, "seconds")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void isJoinChannel(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.isJoinChannel(new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "channelID")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getUsersInChannel(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.getUsersInChannel(new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "channelID"),
|
||||||
|
jsonValue(methodCall, "userIDs")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -59,15 +59,6 @@ public class ConversationManager extends BaseManager {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pinConversation(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.pinConversation(
|
|
||||||
new OnBaseListener(result, methodCall),
|
|
||||||
value(methodCall, "operationID"),
|
|
||||||
value(methodCall, "conversationID"),
|
|
||||||
value(methodCall, "isPinned")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void hideConversation(MethodCall methodCall, MethodChannel.Result result) {
|
public void hideConversation(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.hideConversation(
|
Open_im_sdk.hideConversation(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
@@ -98,32 +89,6 @@ public class ConversationManager extends BaseManager {
|
|||||||
int2long(methodCall, "sessionType")));
|
int2long(methodCall, "sessionType")));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConversationRecvMessageOpt(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.setConversationRecvMessageOpt(
|
|
||||||
new OnBaseListener(result, methodCall),
|
|
||||||
value(methodCall, "operationID"),
|
|
||||||
value(methodCall, "conversationID"),
|
|
||||||
int2long(methodCall, "status")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void getConversationRecvMessageOpt(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.getConversationRecvMessageOpt(
|
|
||||||
new OnBaseListener(result, methodCall),
|
|
||||||
value(methodCall, "operationID"),
|
|
||||||
jsonValue(methodCall, "conversationIDList")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConversationPrivateChat(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.setConversationPrivateChat(
|
|
||||||
new OnBaseListener(result, methodCall),
|
|
||||||
value(methodCall, "operationID"),
|
|
||||||
value(methodCall, "conversationID"),
|
|
||||||
value(methodCall, "isPrivate")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void clearConversationAndDeleteAllMsg(MethodCall methodCall, MethodChannel.Result result) {
|
public void clearConversationAndDeleteAllMsg(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.clearConversationAndDeleteAllMsg(
|
Open_im_sdk.clearConversationAndDeleteAllMsg(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
@@ -140,57 +105,58 @@ public class ConversationManager extends BaseManager {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteAllConversationFromLocal(MethodCall methodCall, MethodChannel.Result result) {
|
public void getAtAllTag(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.deleteAllConversationFromLocal(
|
CommonUtil.runMainThreadReturn(result, Open_im_sdk.getAtAllTag(value(methodCall, "operationID")));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hideAllConversations(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.hideAllConversations(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID")
|
value(methodCall, "operationID")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void resetConversationGroupAtType(MethodCall methodCall, MethodChannel.Result result) {
|
public void searchConversation(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.resetConversationGroupAtType(
|
Open_im_sdk.searchConversation(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
value(methodCall, "conversationID")
|
value(methodCall, "name")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getAtAllTag(MethodCall methodCall, MethodChannel.Result result) {
|
public void changeInputStates(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
CommonUtil.runMainThreadReturn(result, Open_im_sdk.getAtAllTag(value(methodCall, "operationID")));
|
Open_im_sdk.changeInputStates(
|
||||||
}
|
|
||||||
|
|
||||||
public void setGlobalRecvMessageOpt(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.setGlobalRecvMessageOpt(
|
|
||||||
new OnBaseListener(result, methodCall),
|
|
||||||
value(methodCall, "operationID"),
|
|
||||||
int2long(methodCall, "status")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConversationBurnDuration(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.setConversationBurnDuration(
|
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
value(methodCall, "conversationID"),
|
value(methodCall, "conversationID"),
|
||||||
value(methodCall, "burnDuration")
|
value(methodCall, "focus")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConversationIsMsgDestruct(MethodCall methodCall, MethodChannel.Result result) {
|
public void getInputStates(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.setConversationIsMsgDestruct(
|
Open_im_sdk.getInputStates(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
value(methodCall, "conversationID"),
|
value(methodCall, "conversationID"),
|
||||||
value(methodCall, "isMsgDestruct")
|
value(methodCall, "userID")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConversationMsgDestructTime(MethodCall methodCall, MethodChannel.Result result) {
|
public void setConversation(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.setConversationMsgDestructTime(
|
Open_im_sdk.setConversation(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
value(methodCall, "conversationID"),
|
value(methodCall, "conversationID"),
|
||||||
int2long(methodCall, "duration")
|
jsonValue(methodCall, "req")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void searchConversations(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.searchConversation(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "name")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ public class FriendshipManager extends BaseManager {
|
|||||||
Open_im_sdk.getSpecifiedFriendsInfo(
|
Open_im_sdk.getSpecifiedFriendsInfo(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
jsonValue(methodCall, "userIDList")
|
jsonValue(methodCall, "userIDList"),
|
||||||
|
value(methodCall, "filterBlack")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,15 +49,18 @@ public class FriendshipManager extends BaseManager {
|
|||||||
public void getFriendList(MethodCall methodCall, MethodChannel.Result result) {
|
public void getFriendList(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.getFriendList(
|
Open_im_sdk.getFriendList(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID")
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "filterBlack")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFriendRemark(MethodCall methodCall, MethodChannel.Result result) {
|
public void getFriendListPage(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.setFriendRemark(
|
Open_im_sdk.getFriendListPage(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
jsonValue(methodCall)
|
value(methodCall, "offset"),
|
||||||
|
value(methodCall, "count"),
|
||||||
|
value(methodCall, "filterBlack")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +68,8 @@ public class FriendshipManager extends BaseManager {
|
|||||||
Open_im_sdk.addBlack(
|
Open_im_sdk.addBlack(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
value(methodCall, "userID")
|
value(methodCall, "userID"),
|
||||||
|
value(methodCall, "ex")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,4 +127,12 @@ public class FriendshipManager extends BaseManager {
|
|||||||
jsonValue(methodCall, "searchParam")
|
jsonValue(methodCall, "searchParam")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateFriends(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.updateFriends(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
jsonValue(methodCall, "req")
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,6 +62,15 @@ public class GroupManager extends BaseManager {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void getJoinedGroupListPage(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.getJoinedGroupListPage(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "offset"),
|
||||||
|
value(methodCall, "count")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public void createGroup(MethodCall methodCall, MethodChannel.Result result) {
|
public void createGroup(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.createGroup(
|
Open_im_sdk.createGroup(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
@@ -92,7 +101,8 @@ public class GroupManager extends BaseManager {
|
|||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
value(methodCall, "groupID"),
|
value(methodCall, "groupID"),
|
||||||
value(methodCall, "reason"),
|
value(methodCall, "reason"),
|
||||||
value(methodCall, "joinSource")
|
value(methodCall, "joinSource"),
|
||||||
|
value(methodCall, "ex")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,15 +186,6 @@ public class GroupManager extends BaseManager {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGroupMemberNickname(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.setGroupMemberNickname(new OnBaseListener(result, methodCall),
|
|
||||||
value(methodCall, "operationID"),
|
|
||||||
value(methodCall, "groupID"),
|
|
||||||
value(methodCall, "userID"),
|
|
||||||
value(methodCall, "groupNickname")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void searchGroups(MethodCall methodCall, MethodChannel.Result result) {
|
public void searchGroups(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.searchGroups(new OnBaseListener(result, methodCall),
|
Open_im_sdk.searchGroups(new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
@@ -192,15 +193,6 @@ public class GroupManager extends BaseManager {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGroupMemberRoleLevel(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.setGroupMemberRoleLevel(new OnBaseListener(result, methodCall),
|
|
||||||
value(methodCall, "operationID"),
|
|
||||||
value(methodCall, "groupID"),
|
|
||||||
value(methodCall, "userID"),
|
|
||||||
int2long(methodCall, "roleLevel")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void getGroupMemberListByJoinTimeFilter(MethodCall methodCall, MethodChannel.Result result) {
|
public void getGroupMemberListByJoinTimeFilter(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.getGroupMemberListByJoinTimeFilter(new OnBaseListener(result, methodCall),
|
Open_im_sdk.getGroupMemberListByJoinTimeFilter(new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
@@ -213,30 +205,6 @@ public class GroupManager extends BaseManager {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGroupVerification(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.setGroupVerification(new OnBaseListener(result, methodCall),
|
|
||||||
value(methodCall, "operationID"),
|
|
||||||
value(methodCall, "groupID"),
|
|
||||||
value(methodCall, "needVerification")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupLookMemberInfo(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.setGroupLookMemberInfo(new OnBaseListener(result, methodCall),
|
|
||||||
value(methodCall, "operationID"),
|
|
||||||
value(methodCall, "groupID"),
|
|
||||||
value(methodCall, "status")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupApplyMemberFriend(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.setGroupApplyMemberFriend(new OnBaseListener(result, methodCall),
|
|
||||||
value(methodCall, "operationID"),
|
|
||||||
value(methodCall, "groupID"),
|
|
||||||
value(methodCall, "status")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void getGroupMemberOwnerAndAdmin(MethodCall methodCall, MethodChannel.Result result) {
|
public void getGroupMemberOwnerAndAdmin(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.getGroupMemberOwnerAndAdmin(new OnBaseListener(result, methodCall),
|
Open_im_sdk.getGroupMemberOwnerAndAdmin(new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
@@ -264,4 +232,12 @@ public class GroupManager extends BaseManager {
|
|||||||
value(methodCall, "groupID")
|
value(methodCall, "groupID")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void getUsersInGroup(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.getUsersInGroup(new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "groupID"),
|
||||||
|
jsonValue(methodCall, "userIDs")
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -6,6 +6,7 @@ import io.openim.flutter_openim_sdk.FlutterOpenimSdkPlugin;
|
|||||||
import io.openim.flutter_openim_sdk.listener.OnBaseListener;
|
import io.openim.flutter_openim_sdk.listener.OnBaseListener;
|
||||||
import io.openim.flutter_openim_sdk.listener.OnConnListener;
|
import io.openim.flutter_openim_sdk.listener.OnConnListener;
|
||||||
import io.openim.flutter_openim_sdk.listener.OnUploadFileListener;
|
import io.openim.flutter_openim_sdk.listener.OnUploadFileListener;
|
||||||
|
import io.openim.flutter_openim_sdk.listener.OnUploadLogsListener;
|
||||||
import io.openim.flutter_openim_sdk.util.CommonUtil;
|
import io.openim.flutter_openim_sdk.util.CommonUtil;
|
||||||
import open_im_sdk.Open_im_sdk;
|
import open_im_sdk.Open_im_sdk;
|
||||||
|
|
||||||
@@ -57,10 +58,33 @@ public class IMManager extends BaseManager {
|
|||||||
Open_im_sdk.updateFcmToken(
|
Open_im_sdk.updateFcmToken(
|
||||||
new OnBaseListener(result, methodCall),
|
new OnBaseListener(result, methodCall),
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
value(methodCall, "fcmToken")
|
value(methodCall, "fcmToken"),
|
||||||
|
int2long(methodCall, "expireTime")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void uploadLogs(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.uploadLogs(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
int2long(methodCall, "line"),
|
||||||
|
value(methodCall, "ex"),
|
||||||
|
new OnUploadLogsListener(result, methodCall)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void logs(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.logs(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
int2long(methodCall, "logLevel"),
|
||||||
|
value(methodCall, "file"),
|
||||||
|
int2long(methodCall, "line"),
|
||||||
|
value(methodCall, "msgs"),
|
||||||
|
value(methodCall, "err"),
|
||||||
|
value(methodCall, "keyAndValue")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public void setAppBackgroundStatus(MethodCall methodCall, MethodChannel.Result result) {
|
public void setAppBackgroundStatus(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.setAppBackgroundStatus(
|
Open_im_sdk.setAppBackgroundStatus(
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import io.flutter.plugin.common.MethodChannel;
|
|||||||
import io.openim.flutter_openim_sdk.listener.OnAdvancedMsgListener;
|
import io.openim.flutter_openim_sdk.listener.OnAdvancedMsgListener;
|
||||||
import io.openim.flutter_openim_sdk.listener.OnBaseListener;
|
import io.openim.flutter_openim_sdk.listener.OnBaseListener;
|
||||||
import io.openim.flutter_openim_sdk.listener.OnCustomBusinessListener;
|
import io.openim.flutter_openim_sdk.listener.OnCustomBusinessListener;
|
||||||
import io.openim.flutter_openim_sdk.listener.OnMessageKvInfoListener;
|
|
||||||
import io.openim.flutter_openim_sdk.listener.OnMsgSendListener;
|
import io.openim.flutter_openim_sdk.listener.OnMsgSendListener;
|
||||||
import io.openim.flutter_openim_sdk.util.CommonUtil;
|
import io.openim.flutter_openim_sdk.util.CommonUtil;
|
||||||
import open_im_sdk.Open_im_sdk;
|
import open_im_sdk.Open_im_sdk;
|
||||||
@@ -14,74 +13,6 @@ import open_im_sdk.Open_im_sdk;
|
|||||||
public class MessageManager extends BaseManager {
|
public class MessageManager extends BaseManager {
|
||||||
private final static String KEY_ID = "id";
|
private final static String KEY_ID = "id";
|
||||||
|
|
||||||
// private final static Map<String, OnAdvancedMsgListener> listeners = new HashMap<>();
|
|
||||||
/* private static boolean initializedListener = false;
|
|
||||||
private final static Map<String, AdvancedMsgListener> listeners = new ConcurrentHashMap<>();
|
|
||||||
|
|
||||||
protected void clearListeners() {
|
|
||||||
initializedListener = false;
|
|
||||||
listeners.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
private final static OnAdvancedMsgListener sdkMsgListener = new OnAdvancedMsgListener() {
|
|
||||||
@Override
|
|
||||||
public void onRecvC2CReadReceipt(String s) {
|
|
||||||
for (AdvancedMsgListener l : listeners.values()) {
|
|
||||||
l.onRecvC2CReadReceipt(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRecvMessageRevoked(String s) {
|
|
||||||
for (AdvancedMsgListener l : listeners.values()) {
|
|
||||||
l.onRecvMessageRevoked(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRecvNewMessage(String s) {
|
|
||||||
for (AdvancedMsgListener l : listeners.values()) {
|
|
||||||
l.onRecvNewMessage(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public void addAdvancedMsgListener(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
String key = methodCall.argument(KEY_ID);
|
|
||||||
Open_im_sdk.addAdvancedMsgListener(new AdvancedMsgListener(key));
|
|
||||||
listeners.put(key, new AdvancedMsgListener(key));
|
|
||||||
if (!initializedListener) {
|
|
||||||
initializedListener = true;
|
|
||||||
Open_im_sdk.addAdvancedMsgListener(sdkMsgListener);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeAdvancedMsgListener(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
String key = methodCall.argument(KEY_ID);
|
|
||||||
listeners.remove(key);
|
|
||||||
if (listeners.isEmpty()) {
|
|
||||||
initializedListener = false;
|
|
||||||
Open_im_sdk.removeAdvancedMsgListener(sdkMsgListener);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
/*
|
|
||||||
|
|
||||||
public void addAdvancedMsgListener(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
String key = methodCall.argument(KEY_ID);
|
|
||||||
if (!listeners.containsKey(key)) {
|
|
||||||
AdvancedMsgListener listener = new AdvancedMsgListener(key);
|
|
||||||
listeners.put(methodCall.argument(KEY_ID), listener);
|
|
||||||
Open_im_sdk.addAdvancedMsgListener(listener);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeAdvancedMsgListener(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
String key = methodCall.argument(KEY_ID);
|
|
||||||
OnAdvancedMsgListener listener = listeners.remove(key);
|
|
||||||
Open_im_sdk.removeAdvancedMsgListener(listener);
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
public void setAdvancedMsgListener(MethodCall methodCall, MethodChannel.Result result) {
|
public void setAdvancedMsgListener(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
String key = methodCall.argument(KEY_ID);
|
String key = methodCall.argument(KEY_ID);
|
||||||
Open_im_sdk.setAdvancedMsgListener(new OnAdvancedMsgListener(key));
|
Open_im_sdk.setAdvancedMsgListener(new OnAdvancedMsgListener(key));
|
||||||
@@ -96,7 +27,9 @@ public class MessageManager extends BaseManager {
|
|||||||
jsonValue(methodCall, "message"),
|
jsonValue(methodCall, "message"),
|
||||||
value(methodCall, "userID"),
|
value(methodCall, "userID"),
|
||||||
value(methodCall, "groupID"),
|
value(methodCall, "groupID"),
|
||||||
jsonValue(methodCall, "offlinePushInfo")
|
value(methodCall, "channelID"),
|
||||||
|
jsonValue(methodCall, "offlinePushInfo"),
|
||||||
|
value(methodCall, "isOnlineOnly")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,6 +90,7 @@ public class MessageManager extends BaseManager {
|
|||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
jsonValue(methodCall, "message"),
|
jsonValue(methodCall, "message"),
|
||||||
value(methodCall, "groupID"),
|
value(methodCall, "groupID"),
|
||||||
|
value(methodCall, "channelID"),
|
||||||
value(methodCall, "senderID")
|
value(methodCall, "senderID")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -391,6 +325,15 @@ public class MessageManager extends BaseManager {
|
|||||||
value(methodCall, "localEx")
|
value(methodCall, "localEx")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setAppBadge(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.setAppBadge(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "count")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public void sendMessageNotOss(MethodCall methodCall, MethodChannel.Result result) {
|
public void sendMessageNotOss(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.sendMessageNotOss(
|
Open_im_sdk.sendMessageNotOss(
|
||||||
new OnMsgSendListener(result, methodCall),
|
new OnMsgSendListener(result, methodCall),
|
||||||
@@ -398,7 +341,9 @@ public class MessageManager extends BaseManager {
|
|||||||
jsonValue(methodCall, "message"),
|
jsonValue(methodCall, "message"),
|
||||||
value(methodCall, "userID"),
|
value(methodCall, "userID"),
|
||||||
value(methodCall, "groupID"),
|
value(methodCall, "groupID"),
|
||||||
jsonValue(methodCall, "offlinePushInfo")
|
value(methodCall, "channelId"),
|
||||||
|
jsonValue(methodCall, "offlinePushInfo"),
|
||||||
|
value(methodCall, "isOnlineOnly")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -406,6 +351,7 @@ public class MessageManager extends BaseManager {
|
|||||||
CommonUtil.runMainThreadReturn(result,
|
CommonUtil.runMainThreadReturn(result,
|
||||||
Open_im_sdk.createImageMessageByURL(
|
Open_im_sdk.createImageMessageByURL(
|
||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "sourcePath"),
|
||||||
jsonValue(methodCall, "sourcePicture"),
|
jsonValue(methodCall, "sourcePicture"),
|
||||||
jsonValue(methodCall, "bigPicture"),
|
jsonValue(methodCall, "bigPicture"),
|
||||||
jsonValue(methodCall, "snapshotPicture")));
|
jsonValue(methodCall, "snapshotPicture")));
|
||||||
@@ -437,54 +383,4 @@ public class MessageManager extends BaseManager {
|
|||||||
|
|
||||||
result.success(null);
|
result.success(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMessageKvInfoListener(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.setMessageKvInfoListener(new OnMessageKvInfoListener());
|
|
||||||
|
|
||||||
result.success(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
// public void setMessageReactionExtensions(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
// Open_im_sdk.setMessageReactionExtensions(
|
|
||||||
// new OnBaseListener(result, methodCall),
|
|
||||||
// value(methodCall, "operationID"),
|
|
||||||
// jsonValue(methodCall, "message"),
|
|
||||||
// jsonValue(methodCall, "list")
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void deleteMessageReactionExtensions(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
// Open_im_sdk.deleteMessageReactionExtensions(
|
|
||||||
// new OnBaseListener(result, methodCall),
|
|
||||||
// value(methodCall, "operationID"),
|
|
||||||
// jsonValue(methodCall, "message"),
|
|
||||||
// jsonValue(methodCall, "list")
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void getMessageListReactionExtensions(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
// Open_im_sdk.getMessageListReactionExtensions(
|
|
||||||
// new OnBaseListener(result, methodCall),
|
|
||||||
// value(methodCall, "operationID"),
|
|
||||||
// jsonValue(methodCall, "messageList")
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void addMessageReactionExtensions(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
// Open_im_sdk.addMessageReactionExtensions(
|
|
||||||
// new OnBaseListener(result, methodCall),
|
|
||||||
// value(methodCall, "operationID"),
|
|
||||||
// jsonValue(methodCall, "message"),
|
|
||||||
// jsonValue(methodCall, "list")
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void getMessageListSomeReactionExtensions(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
// Open_im_sdk.getMessageListSomeReactionExtensions(
|
|
||||||
// new OnBaseListener(result, methodCall),
|
|
||||||
// value(methodCall, "operationID"),
|
|
||||||
// jsonValue(methodCall, "messageList"),
|
|
||||||
// jsonValue(methodCall, "list")
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,12 +61,4 @@ public class UserManager extends BaseManager {
|
|||||||
value(methodCall, "operationID"),
|
value(methodCall, "operationID"),
|
||||||
jsonValue(methodCall, "userIDs"));
|
jsonValue(methodCall, "userIDs"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getUsersInfoStranger(MethodCall methodCall, MethodChannel.Result result) {
|
|
||||||
Open_im_sdk.getUsersInfoStranger(
|
|
||||||
new OnBaseListener(result, methodCall),
|
|
||||||
value(methodCall, "operationID"),
|
|
||||||
jsonValue(methodCall, "userIDs"),
|
|
||||||
value(methodCall, "groupID"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public class CommonUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public synchronized static <T> void emitEvent(String method, String type, Object errCode, String errMsg, T data) {
|
public synchronized static <T> void emitEvent(String method, String type, Object errCode, String errMsg, T data) {
|
||||||
|
String threadName = Thread.currentThread().getName();
|
||||||
runMainThread(() -> {
|
runMainThread(() -> {
|
||||||
Map<String, Object> res = new ArrayMap<>();
|
Map<String, Object> res = new ArrayMap<>();
|
||||||
if (null != type) {
|
if (null != type) {
|
||||||
@@ -47,7 +48,7 @@ public class CommonUtil {
|
|||||||
if (null != errMsg) {
|
if (null != errMsg) {
|
||||||
res.put("errMsg", errMsg);
|
res.put("errMsg", errMsg);
|
||||||
}
|
}
|
||||||
Log.i("F-OpenIMSDK(native call flutter)", "{ method:" + method + ", type:" + type + " }");
|
Log.i("F-OpenIMSDK(native call flutter)", "thread: " + threadName + " { method:" + method + ", type:" + type + " }");
|
||||||
FlutterOpenimSdkPlugin.channel.invokeMethod(method, res);
|
FlutterOpenimSdkPlugin.channel.invokeMethod(method, res);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
5
example/.gitignore
vendored
@@ -8,6 +8,7 @@
|
|||||||
.buildlog/
|
.buildlog/
|
||||||
.history
|
.history
|
||||||
.svn/
|
.svn/
|
||||||
|
migrate_working_dir/
|
||||||
|
|
||||||
# IntelliJ related
|
# IntelliJ related
|
||||||
*.iml
|
*.iml
|
||||||
@@ -26,14 +27,10 @@
|
|||||||
.dart_tool/
|
.dart_tool/
|
||||||
.flutter-plugins
|
.flutter-plugins
|
||||||
.flutter-plugins-dependencies
|
.flutter-plugins-dependencies
|
||||||
.packages
|
|
||||||
.pub-cache/
|
.pub-cache/
|
||||||
.pub/
|
.pub/
|
||||||
/build/
|
/build/
|
||||||
|
|
||||||
# Web related
|
|
||||||
lib/generated_plugin_registrant.dart
|
|
||||||
|
|
||||||
# Symbolication related
|
# Symbolication related
|
||||||
app.*.symbols
|
app.*.symbols
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,42 @@
|
|||||||
# This file should be version controlled and should not be manually edited.
|
# This file should be version controlled and should not be manually edited.
|
||||||
|
|
||||||
version:
|
version:
|
||||||
revision: b22742018b3edf16c6cadd7b76d9db5e7f9064b5
|
revision: "b0850beeb25f6d5b10426284f506557f66181b36"
|
||||||
channel: stable
|
channel: "stable"
|
||||||
|
|
||||||
project_type: app
|
project_type: app
|
||||||
|
|
||||||
|
# Tracks metadata for the flutter migrate command
|
||||||
|
migration:
|
||||||
|
platforms:
|
||||||
|
- platform: root
|
||||||
|
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
- platform: android
|
||||||
|
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
- platform: ios
|
||||||
|
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
- platform: linux
|
||||||
|
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
- platform: macos
|
||||||
|
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
- platform: web
|
||||||
|
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
- platform: windows
|
||||||
|
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
|
||||||
|
|
||||||
|
# User provided section
|
||||||
|
|
||||||
|
# List of Local paths (relative to this file) that should be
|
||||||
|
# ignored by the migrate tool.
|
||||||
|
#
|
||||||
|
# Files that are not part of the templates will be ignored by default.
|
||||||
|
unmanaged_files:
|
||||||
|
- 'lib/main.dart'
|
||||||
|
- 'ios/Runner.xcodeproj/project.pbxproj'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# flutter_openim_sdk_example
|
# example
|
||||||
|
|
||||||
Demonstrates how to use the flutter_openim_sdk plugin.
|
A new Flutter project.
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
@@ -8,9 +8,9 @@ This project is a starting point for a Flutter application.
|
|||||||
|
|
||||||
A few resources to get you started if this is your first Flutter project:
|
A few resources to get you started if this is your first Flutter project:
|
||||||
|
|
||||||
- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
|
- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
|
||||||
- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
|
- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
|
||||||
|
|
||||||
For help getting started with Flutter, view our
|
For help getting started with Flutter development, view the
|
||||||
[online documentation](https://flutter.dev/docs), which offers tutorials,
|
[online documentation](https://docs.flutter.dev/), which offers tutorials,
|
||||||
samples, guidance on mobile development, and a full API reference.
|
samples, guidance on mobile development, and a full API reference.
|
||||||
|
|||||||
28
example/analysis_options.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# This file configures the analyzer, which statically analyzes Dart code to
|
||||||
|
# check for errors, warnings, and lints.
|
||||||
|
#
|
||||||
|
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
|
||||||
|
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
|
||||||
|
# invoked from the command line by running `flutter analyze`.
|
||||||
|
|
||||||
|
# The following line activates a set of recommended lints for Flutter apps,
|
||||||
|
# packages, and plugins designed to encourage good coding practices.
|
||||||
|
include: package:flutter_lints/flutter.yaml
|
||||||
|
|
||||||
|
linter:
|
||||||
|
# The lint rules applied to this project can be customized in the
|
||||||
|
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
||||||
|
# included above or to enable additional rules. A list of all available lints
|
||||||
|
# and their documentation is published at https://dart.dev/lints.
|
||||||
|
#
|
||||||
|
# Instead of disabling a lint rule for the entire project in the
|
||||||
|
# section below, it can also be suppressed for a single line of code
|
||||||
|
# or a specific dart file by using the `// ignore: name_of_lint` and
|
||||||
|
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
|
||||||
|
# producing the lint.
|
||||||
|
rules:
|
||||||
|
# avoid_print: false # Uncomment to disable the `avoid_print` rule
|
||||||
|
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
|
||||||
|
|
||||||
|
# Additional information about this file can be found at
|
||||||
|
# https://dart.dev/guides/language/analysis-options
|
||||||
2
example/android/.gitignore
vendored
@@ -9,3 +9,5 @@ GeneratedPluginRegistrant.java
|
|||||||
# Remember to never publicly share your keystore.
|
# Remember to never publicly share your keystore.
|
||||||
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
|
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
|
||||||
key.properties
|
key.properties
|
||||||
|
**/*.keystore
|
||||||
|
**/*.jks
|
||||||
|
|||||||
@@ -1,69 +1,58 @@
|
|||||||
|
plugins {
|
||||||
|
id "com.android.application"
|
||||||
|
id "kotlin-android"
|
||||||
|
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
|
||||||
|
id "dev.flutter.flutter-gradle-plugin"
|
||||||
|
}
|
||||||
|
|
||||||
def localProperties = new Properties()
|
def localProperties = new Properties()
|
||||||
def localPropertiesFile = rootProject.file('local.properties')
|
def localPropertiesFile = rootProject.file("local.properties")
|
||||||
if (localPropertiesFile.exists()) {
|
if (localPropertiesFile.exists()) {
|
||||||
localPropertiesFile.withReader('UTF-8') { reader ->
|
localPropertiesFile.withReader("UTF-8") { reader ->
|
||||||
localProperties.load(reader)
|
localProperties.load(reader)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
|
||||||
if (flutterRoot == null) {
|
|
||||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
|
||||||
}
|
|
||||||
|
|
||||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
|
||||||
if (flutterVersionCode == null) {
|
if (flutterVersionCode == null) {
|
||||||
flutterVersionCode = '1'
|
flutterVersionCode = "1"
|
||||||
}
|
}
|
||||||
|
|
||||||
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
def flutterVersionName = localProperties.getProperty("flutter.versionName")
|
||||||
if (flutterVersionName == null) {
|
if (flutterVersionName == null) {
|
||||||
flutterVersionName = '1.0'
|
flutterVersionName = "1.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
|
||||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 30
|
namespace = "com.example.example"
|
||||||
|
compileSdk = flutter.compileSdkVersion
|
||||||
|
ndkVersion = flutter.ndkVersion
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
}
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||||
applicationId "io.openim.flutter_openim_sdk_example"
|
applicationId = "com.example.example"
|
||||||
minSdkVersion 21
|
// You can update the following values to match your application needs.
|
||||||
targetSdkVersion 30
|
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
|
||||||
versionCode flutterVersionCode.toInteger()
|
minSdk = flutter.minSdkVersion
|
||||||
versionName flutterVersionName
|
targetSdk = flutter.targetSdkVersion
|
||||||
|
versionCode = flutterVersionCode.toInteger()
|
||||||
|
versionName = flutterVersionName
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
debug {
|
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
||||||
}
|
|
||||||
release {
|
release {
|
||||||
// TODO: Add your own signing config for the release build.
|
// TODO: Add your own signing config for the release build.
|
||||||
// Signing with the debug keys for now, so `flutter run --release` works.
|
// Signing with the debug keys for now, so `flutter run --release` works.
|
||||||
// signingConfig signingConfigs.debug
|
signingConfig = signingConfigs.debug
|
||||||
|
|
||||||
signingConfig signingConfigs.debug
|
|
||||||
|
|
||||||
minifyEnabled false
|
|
||||||
shrinkResources false
|
|
||||||
|
|
||||||
useProguard true
|
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories{
|
|
||||||
flatDir {
|
|
||||||
dirs 'libs'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dependencies {
|
|
||||||
|
|
||||||
}
|
|
||||||
flutter {
|
flutter {
|
||||||
source '../..'
|
source = "../.."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
package="io.openim.flutter_openim_sdk_example">
|
<!-- The INTERNET permission is required for development. Specifically,
|
||||||
<!-- Flutter needs it to communicate with the running application
|
the Flutter tool needs it to communicate with the running application
|
||||||
to allow setting breakpoints, to provide hot reload, etc.
|
to allow setting breakpoints, to provide hot reload, etc.
|
||||||
-->
|
-->
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
package="io.openim.flutter_openim_sdk_example">
|
<application
|
||||||
<application
|
android:label="example"
|
||||||
android:label="flutter_openim_sdk_example"
|
android:name="${applicationName}"
|
||||||
android:icon="@mipmap/ic_launcher">
|
android:icon="@mipmap/ic_launcher">
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
|
android:exported="true"
|
||||||
android:launchMode="singleTop"
|
android:launchMode="singleTop"
|
||||||
|
android:taskAffinity=""
|
||||||
android:theme="@style/LaunchTheme"
|
android:theme="@style/LaunchTheme"
|
||||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||||
android:hardwareAccelerated="true"
|
android:hardwareAccelerated="true"
|
||||||
@@ -18,15 +20,6 @@
|
|||||||
android:name="io.flutter.embedding.android.NormalTheme"
|
android:name="io.flutter.embedding.android.NormalTheme"
|
||||||
android:resource="@style/NormalTheme"
|
android:resource="@style/NormalTheme"
|
||||||
/>
|
/>
|
||||||
<!-- Displays an Android View that continues showing the launch screen
|
|
||||||
Drawable until Flutter paints its first frame, then this splash
|
|
||||||
screen fades out. A splash screen is useful to avoid any visual
|
|
||||||
gap between the end of Android's launch screen and the painting of
|
|
||||||
Flutter's first frame. -->
|
|
||||||
<meta-data
|
|
||||||
android:name="io.flutter.embedding.android.SplashScreenDrawable"
|
|
||||||
android:resource="@drawable/launch_background"
|
|
||||||
/>
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
@@ -38,4 +31,15 @@
|
|||||||
android:name="flutterEmbedding"
|
android:name="flutterEmbedding"
|
||||||
android:value="2" />
|
android:value="2" />
|
||||||
</application>
|
</application>
|
||||||
|
<!-- Required to query activities that can process text, see:
|
||||||
|
https://developer.android.com/training/package-visibility and
|
||||||
|
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
|
||||||
|
|
||||||
|
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
|
||||||
|
<queries>
|
||||||
|
<intent>
|
||||||
|
<action android:name="android.intent.action.PROCESS_TEXT"/>
|
||||||
|
<data android:mimeType="text/plain"/>
|
||||||
|
</intent>
|
||||||
|
</queries>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
package io.openim.flutter_openim_sdk_example;
|
|
||||||
|
|
||||||
import io.flutter.embedding.android.FlutterActivity;
|
|
||||||
|
|
||||||
public class MainActivity extends FlutterActivity {
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.example.example
|
||||||
|
|
||||||
|
import io.flutter.embedding.android.FlutterActivity
|
||||||
|
|
||||||
|
class MainActivity: FlutterActivity()
|
||||||
|
Before Width: | Height: | Size: 544 B After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 442 B After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 721 B After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 11 KiB |
@@ -3,7 +3,7 @@
|
|||||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
|
||||||
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||||
<!-- Show a splash screen on the activity. Automatically removed when
|
<!-- Show a splash screen on the activity. Automatically removed when
|
||||||
Flutter draws its first frame -->
|
the Flutter engine draws its first frame -->
|
||||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||||
</style>
|
</style>
|
||||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||||
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||||
<!-- Show a splash screen on the activity. Automatically removed when
|
<!-- Show a splash screen on the activity. Automatically removed when
|
||||||
Flutter draws its first frame -->
|
the Flutter engine draws its first frame -->
|
||||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||||
</style>
|
</style>
|
||||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
package="io.openim.flutter_openim_sdk_example">
|
<!-- The INTERNET permission is required for development. Specifically,
|
||||||
<!-- Flutter needs it to communicate with the running application
|
the Flutter tool needs it to communicate with the running application
|
||||||
to allow setting breakpoints, to provide hot reload, etc.
|
to allow setting breakpoints, to provide hot reload, etc.
|
||||||
-->
|
-->
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
|
|||||||
@@ -1,35 +1,18 @@
|
|||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
|
|
||||||
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
|
|
||||||
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
|
|
||||||
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
|
|
||||||
google()
|
|
||||||
mavenCentral()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath 'com.android.tools.build:gradle:3.5.1'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
|
|
||||||
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
|
|
||||||
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
|
|
||||||
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
|
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rootProject.buildDir = '../build'
|
rootProject.buildDir = "../build"
|
||||||
subprojects {
|
subprojects {
|
||||||
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
||||||
project.evaluationDependsOn(':app')
|
}
|
||||||
|
subprojects {
|
||||||
|
project.evaluationDependsOn(":app")
|
||||||
}
|
}
|
||||||
|
|
||||||
task clean(type: Delete) {
|
tasks.register("clean", Delete) {
|
||||||
delete rootProject.buildDir
|
delete rootProject.buildDir
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
org.gradle.jvmargs=-Xmx1536M
|
org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
|
||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#Fri Jun 23 08:50:38 CEST 2017
|
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
|
||||||
|
|||||||
107
example/android/proguard-rules.pro
vendored
@@ -1,107 +0,0 @@
|
|||||||
#默认的proguard-android.txt已经增加了Annotation、native、view的setget方法、Activity参数为view的 方法、Enum枚举、Parcelable、R,此处不再写
|
|
||||||
#------------------------------------------通用区域----------------------------------------------------
|
|
||||||
#----------------------基本指令------------------------
|
|
||||||
-optimizationpasses 5
|
|
||||||
-dontusemixedcaseclassnames
|
|
||||||
-dontskipnonpubliclibraryclasses
|
|
||||||
-dontskipnonpubliclibraryclassmembers
|
|
||||||
-dontpreverify
|
|
||||||
-verbose
|
|
||||||
-printmapping proguardMapping.txt
|
|
||||||
-optimizations !code/simplification/cast,!field/*,!class/merging/*
|
|
||||||
-keepattributes *Annotation*,InnerClasses
|
|
||||||
-keepattributes Signature
|
|
||||||
-keepattributes SourceFile,LineNumberTable
|
|
||||||
|
|
||||||
#如果引用了v4或者v7包
|
|
||||||
-dontwarn android.support.**
|
|
||||||
-keep class android.support.** { *; }
|
|
||||||
-keep interface android.support.** { *; }
|
|
||||||
-keep public class * extends android.support.**
|
|
||||||
-dontwarn android.support.**
|
|
||||||
|
|
||||||
#如果引用了androidx包
|
|
||||||
-keep class com.google.android.material.** {*;}
|
|
||||||
-keep class androidx.** {*;}
|
|
||||||
-keep public class * extends androidx.**
|
|
||||||
-keep interface androidx.** {*;}
|
|
||||||
-dontwarn com.google.android.material.**
|
|
||||||
-dontnote com.google.android.material.**
|
|
||||||
-dontwarn androidx.**
|
|
||||||
|
|
||||||
#---------------------默认保留-------------------------
|
|
||||||
## 基础保留 ##
|
|
||||||
-keep public class * extends android.app.Fragment
|
|
||||||
-keep public class * extends android.app.Activity
|
|
||||||
-keep public class * extends android.app.Application
|
|
||||||
-keep public class * extends android.app.Service
|
|
||||||
-keep public class * extends android.content.BroadcastReceiver
|
|
||||||
-keep public class * extends android.content.ContentProvider
|
|
||||||
-keep public class * extends android.app.backup.BackupAgentHelper
|
|
||||||
-keep public class * extends android.preference.Preference
|
|
||||||
-keep public class com.android.vending.licensing.ILicensingService
|
|
||||||
|
|
||||||
-keep public class * extends android.view.View {
|
|
||||||
public <init>(android.content.Context);
|
|
||||||
public <init>(android.content.Context, android.util.AttributeSet);
|
|
||||||
public <init>(android.content.Context, android.util.AttributeSet, int);
|
|
||||||
public void set*(...);
|
|
||||||
}
|
|
||||||
# 保持自定义控件类不被混淆
|
|
||||||
-keepclasseswithmembers class * {
|
|
||||||
public <init>(android.content.Context, android.util.AttributeSet);
|
|
||||||
public <init>(android.content.Context, android.util.AttributeSet, int);
|
|
||||||
}
|
|
||||||
#保持自定义控件类不被混淆
|
|
||||||
-keepclassmembers class * extends android.app.Activity {
|
|
||||||
public void *(android.view.View);
|
|
||||||
}
|
|
||||||
-keepclassmembers enum * { # 保持枚举 enum 类不被混淆
|
|
||||||
public static **[] values();
|
|
||||||
public static ** valueOf(java.lang.String);
|
|
||||||
}
|
|
||||||
-keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆
|
|
||||||
public static final android.os.Parcelable$Creator *;
|
|
||||||
}
|
|
||||||
-keep class * implements java.io.Serializable # 保持 Serializable 不被混淆
|
|
||||||
#保持 Serializable 不被混淆并且enum 类也不被混淆
|
|
||||||
-keepclassmembers class * implements java.io.Serializable {
|
|
||||||
static final long serialVersionUID;
|
|
||||||
private static final java.io.ObjectStreamField[] serialPersistentFields;
|
|
||||||
!static !transient <fields>;
|
|
||||||
!private <fields>;
|
|
||||||
!private <methods>;
|
|
||||||
private void writeObject(java.io.ObjectOutputStream);
|
|
||||||
private void readObject(java.io.ObjectInputStream);
|
|
||||||
java.lang.Object writeReplace();
|
|
||||||
java.lang.Object readResolve();
|
|
||||||
}
|
|
||||||
#不混淆资源类
|
|
||||||
-keepclassmembers class **.R$* {
|
|
||||||
public static <fields>;
|
|
||||||
}
|
|
||||||
# 保持 native 方法不被混淆
|
|
||||||
-keepclasseswithmembernames class * {
|
|
||||||
native <methods>;
|
|
||||||
}
|
|
||||||
|
|
||||||
#WebView
|
|
||||||
-keepclassmembers class * extends android.webkit.WebView {*;}
|
|
||||||
-keepclassmembers class * extends android.webkit.WebViewClient {*;}
|
|
||||||
-keepclassmembers class * extends android.webkit.WebChromeClient {*;}
|
|
||||||
-keepclassmembers class * {
|
|
||||||
@android.webkit.JavascriptInterface <methods>;
|
|
||||||
}
|
|
||||||
|
|
||||||
-keep class androidx.lifecycle.DefaultLifecycleObserver
|
|
||||||
#-------------------------------------------项目定义区-------------------------------------------------
|
|
||||||
#im
|
|
||||||
-keep class io.openim.flutter_openim_sdk.** { *; }
|
|
||||||
#Flutter Wrapper
|
|
||||||
#-dontwarn io.flutter.**
|
|
||||||
#-keep class io.flutter.app.** { *; }
|
|
||||||
#-keep class io.flutter.plugin.** { *; }
|
|
||||||
#-keep class io.flutter.util.** { *; }
|
|
||||||
#-keep class io.flutter.view.** { *; }
|
|
||||||
#-keep class io.flutter.** { *; }
|
|
||||||
#-keep class io.flutter.plugins.** { *; }
|
|
||||||
@@ -1,11 +1,25 @@
|
|||||||
include ':app'
|
pluginManagement {
|
||||||
|
def flutterSdkPath = {
|
||||||
|
def properties = new Properties()
|
||||||
|
file("local.properties").withInputStream { properties.load(it) }
|
||||||
|
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||||
|
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||||
|
return flutterSdkPath
|
||||||
|
}()
|
||||||
|
|
||||||
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
|
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
|
||||||
def properties = new Properties()
|
|
||||||
|
|
||||||
assert localPropertiesFile.exists()
|
repositories {
|
||||||
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
gradlePluginPortal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
plugins {
|
||||||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||||
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
|
id "com.android.application" version "7.3.0" apply false
|
||||||
|
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
|
||||||
|
}
|
||||||
|
|
||||||
|
include ":app"
|
||||||
|
|||||||
1
example/ios/.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
|
**/dgph
|
||||||
*.mode1v3
|
*.mode1v3
|
||||||
*.mode2v3
|
*.mode2v3
|
||||||
*.moved-aside
|
*.moved-aside
|
||||||
|
|||||||
@@ -21,6 +21,6 @@
|
|||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.0</string>
|
<string>1.0</string>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
<string>11.0</string>
|
<string>12.0</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Uncomment this line to define a global platform for your project
|
# Uncomment this line to define a global platform for your project
|
||||||
platform :ios, '11.0'
|
# platform :ios, '12.0'
|
||||||
|
|
||||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
||||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
||||||
@@ -32,6 +32,9 @@ target 'Runner' do
|
|||||||
use_modular_headers!
|
use_modular_headers!
|
||||||
|
|
||||||
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
||||||
|
target 'RunnerTests' do
|
||||||
|
inherit! :search_paths
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
post_install do |installer|
|
post_install do |installer|
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
PODS:
|
|
||||||
- Flutter (1.0.0)
|
|
||||||
- flutter_openim_sdk (0.0.1):
|
|
||||||
- Flutter
|
|
||||||
- OpenIMSDKCore (= 3.0.0)
|
|
||||||
- "OpenIMSDKCore (3.0.0+1)"
|
|
||||||
|
|
||||||
DEPENDENCIES:
|
|
||||||
- Flutter (from `Flutter`)
|
|
||||||
- flutter_openim_sdk (from `.symlinks/plugins/flutter_openim_sdk/ios`)
|
|
||||||
|
|
||||||
SPEC REPOS:
|
|
||||||
trunk:
|
|
||||||
- OpenIMSDKCore
|
|
||||||
|
|
||||||
EXTERNAL SOURCES:
|
|
||||||
Flutter:
|
|
||||||
:path: Flutter
|
|
||||||
flutter_openim_sdk:
|
|
||||||
:path: ".symlinks/plugins/flutter_openim_sdk/ios"
|
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
|
||||||
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
|
|
||||||
flutter_openim_sdk: 12daf3769f8bf40001970304445b6155c146b7eb
|
|
||||||
OpenIMSDKCore: 2e38a5b9be23e588b5049ebd378161cf277e41a0
|
|
||||||
|
|
||||||
PODFILE CHECKSUM: 7368163408c647b7eb699d0d788ba6718e18fb8d
|
|
||||||
|
|
||||||
COCOAPODS: 1.11.2
|
|
||||||
@@ -8,14 +8,24 @@
|
|||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
||||||
|
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
|
||||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
||||||
79CF11091A38454F94DA1EB4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F48A41A58786A29BEEBCFE3 /* Pods_Runner.framework */; };
|
|
||||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
||||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
||||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXContainerItemProxy section */
|
||||||
|
331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = 97C146E61CF9000F007C117D /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = 97C146ED1CF9000F007C117D;
|
||||||
|
remoteInfo = Runner;
|
||||||
|
};
|
||||||
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
|
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
|
||||||
isa = PBXCopyFilesBuildPhase;
|
isa = PBXCopyFilesBuildPhase;
|
||||||
@@ -32,14 +42,12 @@
|
|||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
||||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||||
2F48A41A58786A29BEEBCFE3 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
|
||||||
|
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||||
3F8F3496860058CED33C418C /* 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>"; };
|
|
||||||
564E6205C72C7CB32AC49601 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||||
85A1617DD2AFC45DFFDD8B11 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; 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>"; };
|
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; };
|
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
@@ -54,19 +62,18 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
79CF11091A38454F94DA1EB4 /* Pods_Runner.framework in Frameworks */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
0EDFEBEB76AE7FAFA44EF2AF /* Frameworks */ = {
|
331C8082294A63A400263BE5 /* RunnerTests */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
2F48A41A58786A29BEEBCFE3 /* Pods_Runner.framework */,
|
331C807B294A618700263BE5 /* RunnerTests.swift */,
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
path = RunnerTests;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
9740EEB11CF90186004384FC /* Flutter */ = {
|
9740EEB11CF90186004384FC /* Flutter */ = {
|
||||||
@@ -86,8 +93,7 @@
|
|||||||
9740EEB11CF90186004384FC /* Flutter */,
|
9740EEB11CF90186004384FC /* Flutter */,
|
||||||
97C146F01CF9000F007C117D /* Runner */,
|
97C146F01CF9000F007C117D /* Runner */,
|
||||||
97C146EF1CF9000F007C117D /* Products */,
|
97C146EF1CF9000F007C117D /* Products */,
|
||||||
E653626F5A38799455FF26C4 /* Pods */,
|
331C8082294A63A400263BE5 /* RunnerTests */,
|
||||||
0EDFEBEB76AE7FAFA44EF2AF /* Frameworks */,
|
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@@ -95,6 +101,7 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
97C146EE1CF9000F007C117D /* Runner.app */,
|
97C146EE1CF9000F007C117D /* Runner.app */,
|
||||||
|
331C8081294A63A400263BE5 /* RunnerTests.xctest */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -114,24 +121,30 @@
|
|||||||
path = Runner;
|
path = Runner;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
E653626F5A38799455FF26C4 /* Pods */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
85A1617DD2AFC45DFFDD8B11 /* Pods-Runner.debug.xcconfig */,
|
|
||||||
3F8F3496860058CED33C418C /* Pods-Runner.release.xcconfig */,
|
|
||||||
564E6205C72C7CB32AC49601 /* Pods-Runner.profile.xcconfig */,
|
|
||||||
);
|
|
||||||
path = Pods;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
|
331C8080294A63A400263BE5 /* RunnerTests */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
|
||||||
|
buildPhases = (
|
||||||
|
331C807D294A63A400263BE5 /* Sources */,
|
||||||
|
331C807F294A63A400263BE5 /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
331C8086294A63A400263BE5 /* PBXTargetDependency */,
|
||||||
|
);
|
||||||
|
name = RunnerTests;
|
||||||
|
productName = RunnerTests;
|
||||||
|
productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
|
||||||
|
productType = "com.apple.product-type.bundle.unit-test";
|
||||||
|
};
|
||||||
97C146ED1CF9000F007C117D /* Runner */ = {
|
97C146ED1CF9000F007C117D /* Runner */ = {
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
DFE84742E2B41158E8703A14 /* [CP] Check Pods Manifest.lock */,
|
|
||||||
9740EEB61CF901F6004384FC /* Run Script */,
|
9740EEB61CF901F6004384FC /* Run Script */,
|
||||||
97C146EA1CF9000F007C117D /* Sources */,
|
97C146EA1CF9000F007C117D /* Sources */,
|
||||||
97C146EB1CF9000F007C117D /* Frameworks */,
|
97C146EB1CF9000F007C117D /* Frameworks */,
|
||||||
@@ -154,9 +167,14 @@
|
|||||||
97C146E61CF9000F007C117D /* Project object */ = {
|
97C146E61CF9000F007C117D /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastUpgradeCheck = 1300;
|
BuildIndependentTargetsInParallel = YES;
|
||||||
|
LastUpgradeCheck = 1510;
|
||||||
ORGANIZATIONNAME = "";
|
ORGANIZATIONNAME = "";
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
|
331C8080294A63A400263BE5 = {
|
||||||
|
CreatedOnToolsVersion = 14.0;
|
||||||
|
TestTargetID = 97C146ED1CF9000F007C117D;
|
||||||
|
};
|
||||||
97C146ED1CF9000F007C117D = {
|
97C146ED1CF9000F007C117D = {
|
||||||
CreatedOnToolsVersion = 7.3.1;
|
CreatedOnToolsVersion = 7.3.1;
|
||||||
LastSwiftMigration = 1100;
|
LastSwiftMigration = 1100;
|
||||||
@@ -177,11 +195,19 @@
|
|||||||
projectRoot = "";
|
projectRoot = "";
|
||||||
targets = (
|
targets = (
|
||||||
97C146ED1CF9000F007C117D /* Runner */,
|
97C146ED1CF9000F007C117D /* Runner */,
|
||||||
|
331C8080294A63A400263BE5 /* RunnerTests */,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
/* End PBXProject section */
|
/* End PBXProject section */
|
||||||
|
|
||||||
/* Begin PBXResourcesBuildPhase section */
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
331C807F294A63A400263BE5 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
97C146EC1CF9000F007C117D /* Resources */ = {
|
97C146EC1CF9000F007C117D /* Resources */ = {
|
||||||
isa = PBXResourcesBuildPhase;
|
isa = PBXResourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -203,6 +229,7 @@
|
|||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
|
||||||
);
|
);
|
||||||
name = "Thin Binary";
|
name = "Thin Binary";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
@@ -226,31 +253,17 @@
|
|||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||||
};
|
};
|
||||||
DFE84742E2B41158E8703A14 /* [CP] Check Pods Manifest.lock */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
|
||||||
"${PODS_ROOT}/Manifest.lock",
|
|
||||||
);
|
|
||||||
name = "[CP] Check Pods Manifest.lock";
|
|
||||||
outputFileListPaths = (
|
|
||||||
);
|
|
||||||
outputPaths = (
|
|
||||||
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
331C807D294A63A400263BE5 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
97C146EA1CF9000F007C117D /* Sources */ = {
|
97C146EA1CF9000F007C117D /* Sources */ = {
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -262,6 +275,14 @@
|
|||||||
};
|
};
|
||||||
/* End PBXSourcesBuildPhase section */
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXTargetDependency section */
|
||||||
|
331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = 97C146ED1CF9000F007C117D /* Runner */;
|
||||||
|
targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
/* Begin PBXVariantGroup section */
|
/* Begin PBXVariantGroup section */
|
||||||
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
|
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
|
||||||
isa = PBXVariantGroup;
|
isa = PBXVariantGroup;
|
||||||
@@ -286,7 +307,7 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ARCHS = arm64;
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
@@ -316,6 +337,7 @@
|
|||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
@@ -324,7 +346,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SUPPORTED_PLATFORMS = iphoneos;
|
SUPPORTED_PLATFORMS = iphoneos;
|
||||||
@@ -337,18 +359,17 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ARCHS = "$(ARCHS_STANDARD)";
|
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||||
DEVELOPMENT_TEAM = BDLHL8GNFV;
|
DEVELOPMENT_TEAM = V57RT7LMFH;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = cn.rentsoft.uni;
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
@@ -356,11 +377,58 @@
|
|||||||
};
|
};
|
||||||
name = Profile;
|
name = Profile;
|
||||||
};
|
};
|
||||||
|
331C8088294A63A400263BE5 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
331C8089294A63A400263BE5 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
331C808A294A63A400263BE5 /* Profile */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||||
|
};
|
||||||
|
name = Profile;
|
||||||
|
};
|
||||||
97C147031CF9000F007C117D /* Debug */ = {
|
97C147031CF9000F007C117D /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ARCHS = arm64;
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
@@ -390,6 +458,7 @@
|
|||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
@@ -404,7 +473,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = YES;
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
@@ -416,7 +485,7 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ARCHS = arm64;
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
@@ -446,6 +515,7 @@
|
|||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
@@ -454,7 +524,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SUPPORTED_PLATFORMS = iphoneos;
|
SUPPORTED_PLATFORMS = iphoneos;
|
||||||
@@ -469,18 +539,17 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ARCHS = "$(ARCHS_STANDARD)";
|
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||||
DEVELOPMENT_TEAM = BDLHL8GNFV;
|
DEVELOPMENT_TEAM = V57RT7LMFH;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = cn.rentsoft.uni;
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
@@ -493,18 +562,17 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ARCHS = "$(ARCHS_STANDARD)";
|
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||||
DEVELOPMENT_TEAM = BDLHL8GNFV;
|
DEVELOPMENT_TEAM = V57RT7LMFH;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = cn.rentsoft.uni;
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
@@ -515,6 +583,16 @@
|
|||||||
/* End XCBuildConfiguration section */
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
/* Begin XCConfigurationList section */
|
/* Begin XCConfigurationList section */
|
||||||
|
331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
331C8088294A63A400263BE5 /* Debug */,
|
||||||
|
331C8089294A63A400263BE5 /* Release */,
|
||||||
|
331C808A294A63A400263BE5 /* Profile */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
|
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "1300"
|
LastUpgradeVersion = "1510"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
@@ -27,8 +27,6 @@
|
|||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
<Testables>
|
|
||||||
</Testables>
|
|
||||||
<MacroExpansion>
|
<MacroExpansion>
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
@@ -38,8 +36,19 @@
|
|||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</MacroExpansion>
|
</MacroExpansion>
|
||||||
<AdditionalOptions>
|
<Testables>
|
||||||
</AdditionalOptions>
|
<TestableReference
|
||||||
|
skipped = "NO"
|
||||||
|
parallelizable = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "331C8080294A63A400263BE5"
|
||||||
|
BuildableName = "RunnerTests.xctest"
|
||||||
|
BlueprintName = "RunnerTests"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</TestableReference>
|
||||||
|
</Testables>
|
||||||
</TestAction>
|
</TestAction>
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
@@ -61,8 +70,6 @@
|
|||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildableProductRunnable>
|
</BuildableProductRunnable>
|
||||||
<AdditionalOptions>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
buildConfiguration = "Profile"
|
buildConfiguration = "Profile"
|
||||||
|
|||||||
@@ -4,7 +4,4 @@
|
|||||||
<FileRef
|
<FileRef
|
||||||
location = "group:Runner.xcodeproj">
|
location = "group:Runner.xcodeproj">
|
||||||
</FileRef>
|
</FileRef>
|
||||||
<FileRef
|
|
||||||
location = "group:Pods/Pods.xcodeproj">
|
|
||||||
</FileRef>
|
|
||||||
</Workspace>
|
</Workspace>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import UIKit
|
|
||||||
import Flutter
|
import Flutter
|
||||||
|
import UIKit
|
||||||
|
|
||||||
@UIApplicationMain
|
@UIApplicationMain
|
||||||
@objc class AppDelegate: FlutterAppDelegate {
|
@objc class AppDelegate: FlutterAppDelegate {
|
||||||
|
|||||||
@@ -1,103 +1,122 @@
|
|||||||
{
|
{
|
||||||
"images" : [
|
"images" : [
|
||||||
{
|
{
|
||||||
|
"size" : "20x20",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "2x",
|
"filename" : "Icon-App-20x20@2x.png",
|
||||||
"size" : "20x20"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "20x20",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "3x",
|
"filename" : "Icon-App-20x20@3x.png",
|
||||||
"size" : "20x20"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "29x29",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "1x",
|
"filename" : "Icon-App-29x29@1x.png",
|
||||||
"size" : "29x29"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "29x29",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "2x",
|
"filename" : "Icon-App-29x29@2x.png",
|
||||||
"size" : "29x29"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "29x29",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "3x",
|
"filename" : "Icon-App-29x29@3x.png",
|
||||||
"size" : "29x29"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "40x40",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "2x",
|
"filename" : "Icon-App-40x40@2x.png",
|
||||||
"size" : "40x40"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "40x40",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "3x",
|
"filename" : "Icon-App-40x40@3x.png",
|
||||||
"size" : "40x40"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "60x60",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "2x",
|
"filename" : "Icon-App-60x60@2x.png",
|
||||||
"size" : "60x60"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "60x60",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "3x",
|
"filename" : "Icon-App-60x60@3x.png",
|
||||||
"size" : "60x60"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "20x20",
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "1x",
|
"filename" : "Icon-App-20x20@1x.png",
|
||||||
"size" : "20x20"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "20x20",
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "2x",
|
"filename" : "Icon-App-20x20@2x.png",
|
||||||
"size" : "20x20"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "29x29",
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "1x",
|
"filename" : "Icon-App-29x29@1x.png",
|
||||||
"size" : "29x29"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "29x29",
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "2x",
|
"filename" : "Icon-App-29x29@2x.png",
|
||||||
"size" : "29x29"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "40x40",
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "1x",
|
"filename" : "Icon-App-40x40@1x.png",
|
||||||
"size" : "40x40"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "40x40",
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "2x",
|
"filename" : "Icon-App-40x40@2x.png",
|
||||||
"size" : "40x40"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "76x76",
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "1x",
|
"filename" : "Icon-App-76x76@1x.png",
|
||||||
"size" : "76x76"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "76x76",
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "2x",
|
"filename" : "Icon-App-76x76@2x.png",
|
||||||
"size" : "76x76"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "83.5x83.5",
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "2x",
|
"filename" : "Icon-App-83.5x83.5@2x.png",
|
||||||
"size" : "83.5x83.5"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"size" : "1024x1024",
|
||||||
"idiom" : "ios-marketing",
|
"idiom" : "ios-marketing",
|
||||||
"scale" : "1x",
|
"filename" : "Icon-App-1024x1024@1x.png",
|
||||||
"size" : "1024x1024"
|
"scale" : "1x"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"info" : {
|
"info" : {
|
||||||
"author" : "xcode",
|
"version" : 1,
|
||||||
"version" : 1
|
"author" : "xcode"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 579 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 970 B |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
@@ -2,19 +2,22 @@
|
|||||||
"images" : [
|
"images" : [
|
||||||
{
|
{
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
|
"filename" : "LaunchImage.png",
|
||||||
"scale" : "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
|
"filename" : "LaunchImage@2x.png",
|
||||||
"scale" : "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
|
"filename" : "LaunchImage@3x.png",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"info" : {
|
"info" : {
|
||||||
"author" : "xcode",
|
"version" : 1,
|
||||||
"version" : 1
|
"author" : "xcode"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
vendored
Normal file
|
After Width: | Height: | Size: 68 B |
BIN
example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 68 B |
BIN
example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 68 B |
@@ -1,10 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19455" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
|
||||||
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<deployment identifier="iOS"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19454"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
<!--Flutter View Controller-->
|
<!--Flutter View Controller-->
|
||||||
@@ -16,14 +14,13 @@
|
|||||||
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
|
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
|
||||||
</layoutGuides>
|
</layoutGuides>
|
||||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="-26" y="-44"/>
|
|
||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
|
||||||
<true/>
|
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>Example</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>$(EXECUTABLE_NAME)</string>
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>flutter_openim_sdk_example</string>
|
<string>example</string>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
@@ -24,8 +24,6 @@
|
|||||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
|
||||||
<true/>
|
|
||||||
<key>UILaunchStoryboardName</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
<string>LaunchScreen</string>
|
<string>LaunchScreen</string>
|
||||||
<key>UIMainStoryboardFile</key>
|
<key>UIMainStoryboardFile</key>
|
||||||
@@ -43,7 +41,9 @@
|
|||||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
</array>
|
</array>
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||||
<false/>
|
<true/>
|
||||||
|
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||||
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
12
example/ios/RunnerTests/RunnerTests.swift
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import Flutter
|
||||||
|
import UIKit
|
||||||
|
import XCTest
|
||||||
|
|
||||||
|
class RunnerTests: XCTestCase {
|
||||||
|
|
||||||
|
func testExample() {
|
||||||
|
// If you add code to the Runner application, consider adding tests here.
|
||||||
|
// See https://developer.apple.com/documentation/xctest for more information about using XCTest.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -19,7 +19,6 @@ class _MyAppState extends State<MyApp> {
|
|||||||
apiAddr: '',
|
apiAddr: '',
|
||||||
wsAddr: '',
|
wsAddr: '',
|
||||||
dataDir: '/',
|
dataDir: '/',
|
||||||
objectStorage: 'minio',
|
|
||||||
listener: OnConnectListener());
|
listener: OnConnectListener());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,56 +5,56 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: async
|
name: async
|
||||||
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
|
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.10.0"
|
version: "2.11.0"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: boolean_selector
|
name: boolean_selector
|
||||||
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
|
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.1"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: characters
|
name: characters
|
||||||
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
|
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.1"
|
version: "1.3.0"
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.1"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
|
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.17.0"
|
version: "1.18.0"
|
||||||
cupertino_icons:
|
cupertino_icons:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: cupertino_icons
|
name: cupertino_icons
|
||||||
sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
|
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.5"
|
version: "1.0.8"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fake_async
|
name: fake_async
|
||||||
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
|
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.1"
|
version: "1.3.1"
|
||||||
flutter:
|
flutter:
|
||||||
@@ -62,58 +62,90 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
flutter_lints:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description:
|
||||||
|
name: flutter_lints
|
||||||
|
sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.2"
|
||||||
flutter_openim_sdk:
|
flutter_openim_sdk:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: ".."
|
path: ".."
|
||||||
relative: true
|
relative: true
|
||||||
source: path
|
source: path
|
||||||
version: "3.0.0"
|
version: "3.8.1+1"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
js:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: js
|
name: leak_tracker
|
||||||
sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
|
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.5"
|
version: "10.0.4"
|
||||||
|
leak_tracker_flutter_testing:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: leak_tracker_flutter_testing
|
||||||
|
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.3"
|
||||||
|
leak_tracker_testing:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: leak_tracker_testing
|
||||||
|
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.1"
|
||||||
|
lints:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: lints
|
||||||
|
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.0"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
|
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.13"
|
version: "0.12.16+1"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
|
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
version: "0.8.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
|
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.0"
|
version: "1.12.0"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path
|
name: path
|
||||||
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
|
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.2"
|
version: "1.9.0"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
@@ -123,32 +155,32 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: source_span
|
name: source_span
|
||||||
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
|
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.1"
|
version: "1.10.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stack_trace
|
name: stack_trace
|
||||||
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
|
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.11.0"
|
version: "1.11.1"
|
||||||
stream_channel:
|
stream_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stream_channel
|
name: stream_channel
|
||||||
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
|
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.2"
|
||||||
string_scanner:
|
string_scanner:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: string_scanner
|
name: string_scanner
|
||||||
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.0"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
@@ -156,25 +188,33 @@ packages:
|
|||||||
description:
|
description:
|
||||||
name: term_glyph
|
name: term_glyph
|
||||||
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
|
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.1"
|
version: "1.2.1"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
|
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.16"
|
version: "0.7.0"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_math
|
name: vector_math
|
||||||
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.4"
|
||||||
|
vm_service:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: vm_service
|
||||||
|
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "14.2.1"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.18.0 <3.0.0"
|
dart: ">=3.4.4 <4.0.0"
|
||||||
flutter: ">=1.20.0"
|
flutter: ">=3.18.0-18.0.pre.54"
|
||||||
|
|||||||
@@ -2,13 +2,32 @@ name: flutter_openim_sdk_example
|
|||||||
description: Demonstrates how to use the flutter_openim_sdk plugin.
|
description: Demonstrates how to use the flutter_openim_sdk plugin.
|
||||||
|
|
||||||
# The following line prevents the package from being accidentally published to
|
# The following line prevents the package from being accidentally published to
|
||||||
# pub.dev using `pub publish`. This is preferred for private packages.
|
# pub.dev using `flutter pub publish`. This is preferred for private packages.
|
||||||
#publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||||
version: 1.0.0
|
|
||||||
|
# The following defines the version and build number for your application.
|
||||||
|
# A version number is three numbers separated by dots, like 1.2.43
|
||||||
|
# followed by an optional build number separated by a +.
|
||||||
|
# Both the version and the builder number may be overridden in flutter
|
||||||
|
# build by specifying --build-name and --build-number, respectively.
|
||||||
|
# In Android, build-name is used as versionName while build-number used as versionCode.
|
||||||
|
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
|
||||||
|
# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
|
||||||
|
# Read more about iOS versioning at
|
||||||
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
|
# In Windows, build-name is used as the major, minor, and patch parts
|
||||||
|
# of the product and file versions while build-number is used as the build suffix.
|
||||||
|
version: 1.0.0+1
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.12.0 <3.0.0"
|
sdk: '>=3.4.4 <4.0.0'
|
||||||
|
|
||||||
|
# Dependencies specify other packages that your package needs in order to work.
|
||||||
|
# To automatically upgrade your package dependencies to the latest versions
|
||||||
|
# consider running `flutter pub upgrade --major-versions`. Alternatively,
|
||||||
|
# dependencies can be manually updated by changing the version numbers below to
|
||||||
|
# the latest version available on pub.dev. To see which dependencies have newer
|
||||||
|
# versions available, run `flutter pub outdated`.
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
@@ -23,16 +42,23 @@ dependencies:
|
|||||||
|
|
||||||
# The following adds the Cupertino Icons font to your application.
|
# The following adds the Cupertino Icons font to your application.
|
||||||
# Use with the CupertinoIcons class for iOS style icons.
|
# Use with the CupertinoIcons class for iOS style icons.
|
||||||
cupertino_icons: ^1.0.2
|
cupertino_icons: ^1.0.6
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|
||||||
|
# The "flutter_lints" package below contains a set of recommended lints to
|
||||||
|
# encourage good coding practices. The lint set provided by the package is
|
||||||
|
# activated in the `analysis_options.yaml` file located at the root of your
|
||||||
|
# package. See that file for information about deactivating specific lint
|
||||||
|
# rules and activating additional ones.
|
||||||
|
flutter_lints: ^3.0.0
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|
||||||
# The following section is specific to Flutter.
|
# The following section is specific to Flutter packages.
|
||||||
flutter:
|
flutter:
|
||||||
|
|
||||||
# The following line ensures that the Material Icons font is
|
# The following line ensures that the Material Icons font is
|
||||||
@@ -46,7 +72,7 @@ flutter:
|
|||||||
# - images/a_dot_ham.jpeg
|
# - images/a_dot_ham.jpeg
|
||||||
|
|
||||||
# An image asset can refer to one or more resolution-specific "variants", see
|
# An image asset can refer to one or more resolution-specific "variants", see
|
||||||
# https://flutter.dev/assets-and-images/#resolution-aware.
|
# https://flutter.dev/assets-and-images/#resolution-aware
|
||||||
|
|
||||||
# For details regarding adding assets from package dependencies, see
|
# For details regarding adding assets from package dependencies, see
|
||||||
# https://flutter.dev/assets-and-images/#from-packages
|
# https://flutter.dev/assets-and-images/#from-packages
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// This is a basic Flutter widget test.
|
// This is a basic Flutter widget test.
|
||||||
//
|
//
|
||||||
// To perform an interaction with a widget in your test, use the WidgetTester
|
// To perform an interaction with a widget in your test, use the WidgetTester
|
||||||
// utility that Flutter provides. For example, you can send tap and scroll
|
// utility in the flutter_test package. For example, you can send tap and scroll
|
||||||
// gestures. You can also use WidgetTester to find child widgets in the widget
|
// gestures. You can also use WidgetTester to find child widgets in the widget
|
||||||
// tree, read text, and verify that the values of widget properties are correct.
|
// tree, read text, and verify that the values of widget properties are correct.
|
||||||
|
|
||||||
@@ -11,17 +11,20 @@ import 'package:flutter_test/flutter_test.dart';
|
|||||||
import 'package:flutter_openim_sdk_example/main.dart';
|
import 'package:flutter_openim_sdk_example/main.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('Verify Platform version', (WidgetTester tester) async {
|
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||||
// Build our app and trigger a frame.
|
// Build our app and trigger a frame.
|
||||||
await tester.pumpWidget(MyApp());
|
await tester.pumpWidget(MyApp());
|
||||||
|
|
||||||
// Verify that platform version is retrieved.
|
// Verify that our counter starts at 0.
|
||||||
expect(
|
expect(find.text('0'), findsOneWidget);
|
||||||
find.byWidgetPredicate(
|
expect(find.text('1'), findsNothing);
|
||||||
(Widget widget) => widget is Text &&
|
|
||||||
widget.data!.startsWith('Running on:'),
|
// Tap the '+' icon and trigger a frame.
|
||||||
),
|
await tester.tap(find.byIcon(Icons.add));
|
||||||
findsOneWidget,
|
await tester.pump();
|
||||||
);
|
|
||||||
|
// Verify that our counter has incremented.
|
||||||
|
expect(find.text('0'), findsNothing);
|
||||||
|
expect(find.text('1'), findsOneWidget);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
38
ios/.gitignore
vendored
@@ -1,38 +0,0 @@
|
|||||||
.idea/
|
|
||||||
.vagrant/
|
|
||||||
.sconsign.dblite
|
|
||||||
.svn/
|
|
||||||
|
|
||||||
.DS_Store
|
|
||||||
*.swp
|
|
||||||
profile
|
|
||||||
|
|
||||||
DerivedData/
|
|
||||||
build/
|
|
||||||
GeneratedPluginRegistrant.h
|
|
||||||
GeneratedPluginRegistrant.m
|
|
||||||
|
|
||||||
.generated/
|
|
||||||
|
|
||||||
*.pbxuser
|
|
||||||
*.mode1v3
|
|
||||||
*.mode2v3
|
|
||||||
*.perspectivev3
|
|
||||||
|
|
||||||
!default.pbxuser
|
|
||||||
!default.mode1v3
|
|
||||||
!default.mode2v3
|
|
||||||
!default.perspectivev3
|
|
||||||
|
|
||||||
xcuserdata
|
|
||||||
|
|
||||||
*.moved-aside
|
|
||||||
|
|
||||||
*.pyc
|
|
||||||
*sync/
|
|
||||||
Icon?
|
|
||||||
.tags*
|
|
||||||
|
|
||||||
/Flutter/Generated.xcconfig
|
|
||||||
/Flutter/ephemeral/
|
|
||||||
/Flutter/flutter_export_environment.sh
|
|
||||||
101
ios/Classes/Module/ChannelManager.swift
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
import Foundation
|
||||||
|
import OpenIMCore
|
||||||
|
|
||||||
|
public class ChannelManager: BaseServiceManager {
|
||||||
|
|
||||||
|
public override func registerHandlers() {
|
||||||
|
super.registerHandlers()
|
||||||
|
|
||||||
|
// self["changeChannelMemberMute"] = changeChannelMemberMute
|
||||||
|
// self["changeChannelMute"] = changeChannelMute
|
||||||
|
|
||||||
|
// self["getChannelMemberList"] = getChannelMemberList
|
||||||
|
|
||||||
|
|
||||||
|
self["getChannelMembersInfo"] = getChannelMembersInfo
|
||||||
|
self["getChannelsInfo"] = getChannelsInfo
|
||||||
|
|
||||||
|
|
||||||
|
self["getUsersInChannel"] = getUsersInChannel
|
||||||
|
self["isJoinChannel"] = isJoinChannel
|
||||||
|
self["joinChannel"] = joinChannel
|
||||||
|
self["quitChannel"] = quitChannel
|
||||||
|
self["setChannelListener"] = setChannelListener
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// func changeChannelMemberMute(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
// Open_im_sdkChangeChannelMemberMute(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"], methodCall[string:"userID"], methodCall[int:"seconds"])
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// func changeChannelMute(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
// Open_im_sdkChangeChannelMute(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"], methodCall[bool: "mute"])
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// func getChannelMemberList(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
// Open_im_sdkGetChannelMemberList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"], methodCall[int32: "filter"],
|
||||||
|
// methodCall[int32: "offset"], methodCall[int32: "count"])
|
||||||
|
// }
|
||||||
|
|
||||||
|
func getChannelMembersInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetSpecifiedChannelMembersInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"], methodCall[jsonString: "userIDList"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getChannelsInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetSpecifiedChannelsInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "channelIDList"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getUsersInChannel(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetUsersInChannel(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"],
|
||||||
|
methodCall[jsonString: "userIDs"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func isJoinChannel(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkIsJoinChannel(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func joinChannel(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkJoinChannel(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"], methodCall[string:
|
||||||
|
"reason"], methodCall[int32: "joinSource"], methodCall[jsonString: "ex"])
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func quitChannel(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkQuitChannel(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func setChannelListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkSetChannelListener(ChannelListener(channel: channel))
|
||||||
|
callBack(result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ChannelListener: NSObject, Open_im_sdk_callbackOnChannelListenerProtocol {
|
||||||
|
|
||||||
|
private let channel: FlutterMethodChannel
|
||||||
|
|
||||||
|
init(channel: FlutterMethodChannel) {
|
||||||
|
self.channel = channel
|
||||||
|
}
|
||||||
|
|
||||||
|
public func onChannelDismissed(_ s: String?) {
|
||||||
|
CommonUtil.emitEvent(channel: channel, method: "channelListener", type: "onChannelDismissed", errCode: nil, errMsg: nil, data: s)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func onChannelInfoChanged(_ s: String?) {
|
||||||
|
CommonUtil.emitEvent(channel: channel, method: "channelListener", type: "onChannelInfoChanged", errCode: nil, errMsg: nil, data: s)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func onChannelMemberAdded(_ s: String?) {
|
||||||
|
CommonUtil.emitEvent(channel: channel, method: "channelListener", type: "onChannelMemberAdded", errCode: nil, errMsg: nil, data: s)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func onChannelMemberDeleted(_ s: String?) {
|
||||||
|
CommonUtil.emitEvent(channel: channel, method: "channelListener", type: "onChannelMemberDeleted", errCode: nil, errMsg: nil, data: s)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func onChannelMemberInfoChanged(_ s: String?) {
|
||||||
|
CommonUtil.emitEvent(channel: channel, method: "channelListener", type: "onChannelMemberInfoChanged", errCode: nil, errMsg: nil, data: s)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -5,122 +5,111 @@ public class ConversationManager: BaseServiceManager {
|
|||||||
|
|
||||||
public override func registerHandlers() {
|
public override func registerHandlers() {
|
||||||
super.registerHandlers()
|
super.registerHandlers()
|
||||||
self["setConversationListener"] = setConversationListener
|
self["changeInputStates"] = changeInputStates
|
||||||
self["getAllConversationList"] = getAllConversationList
|
|
||||||
self["getConversationListSplit"] = getConversationListSplit
|
|
||||||
self["getOneConversation"] = getOneConversation
|
|
||||||
self["getMultipleConversation"] = getMultipleConversation
|
|
||||||
self["setConversationDraft"] = setConversationDraft
|
|
||||||
self["pinConversation"] = pinConversation
|
|
||||||
self["hideConversation"] = hideConversation
|
|
||||||
self["markConversationMessageAsRead"] = markConversationMessageAsRead
|
|
||||||
self["getTotalUnreadMsgCount"] = getTotalUnreadMsgCount
|
|
||||||
self["getConversationIDBySessionType"] = getConversationIDBySessionType
|
|
||||||
self["setConversationRecvMessageOpt"] = setConversationRecvMessageOpt
|
|
||||||
self["getConversationRecvMessageOpt"] = getConversationRecvMessageOpt
|
|
||||||
self["setConversationPrivateChat"] = setConversationPrivateChat
|
|
||||||
self["clearConversationAndDeleteAllMsg"] = clearConversationAndDeleteAllMsg
|
self["clearConversationAndDeleteAllMsg"] = clearConversationAndDeleteAllMsg
|
||||||
self["deleteConversationAndDeleteAllMsg"] = deleteConversationAndDeleteAllMsg
|
self["deleteConversationAndDeleteAllMsg"] = deleteConversationAndDeleteAllMsg
|
||||||
self["deleteAllConversationFromLocal"] = deleteAllConversationFromLocal
|
self["getAllConversationList"] = getAllConversationList
|
||||||
self["resetConversationGroupAtType"] = resetConversationGroupAtType
|
|
||||||
self["getAtAllTag"] = getAtAllTag
|
self["getAtAllTag"] = getAtAllTag
|
||||||
self["setGlobalRecvMessageOpt"] = setGlobalRecvMessageOpt
|
self["getConversationIDBySessionType"] = getConversationIDBySessionType
|
||||||
self["setConversationBurnDuration"] = setConversationBurnDuration
|
self["getConversationListSplit"] = getConversationListSplit
|
||||||
|
self["getInputStates"] = getInputStates
|
||||||
|
self["getMultipleConversation"] = getMultipleConversation
|
||||||
|
self["getOneConversation"] = getOneConversation
|
||||||
|
self["getTotalUnreadMsgCount"] = getTotalUnreadMsgCount
|
||||||
|
self["hideAllConversations"] = hideAllConversations
|
||||||
|
self["hideConversation"] = hideConversation
|
||||||
|
self["markConversationMessageAsRead"] = markConversationMessageAsRead
|
||||||
|
self["searchConversation"] = searchConversation
|
||||||
|
self["setConversationDraft"] = setConversationDraft
|
||||||
|
self["setConversationListener"] = setConversationListener
|
||||||
|
self["setConversation"] = setConversation
|
||||||
|
self["searchConversations"] = searchConversations
|
||||||
}
|
}
|
||||||
|
|
||||||
func setConversationListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func changeInputStates(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkChangeInputStates(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[bool: "focus"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func clearConversationAndDeleteAllMsg(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkClearConversationAndDeleteAllMsg(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func deleteConversationAndDeleteAllMsg(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkDeleteConversationAndDeleteAllMsg(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getAllConversationList(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetAllConversationList(BaseCallback(result: result), methodCall[string: "operationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getAtAllTag(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
callBack(result, Open_im_sdkGetAtAllTag(methodCall[string: "operationID"]))
|
||||||
|
}
|
||||||
|
|
||||||
|
func getConversationIDBySessionType(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
let conversationID = Open_im_sdkGetConversationIDBySessionType(methodCall[string: "operationID"], methodCall[string: "sourceID"], methodCall[int: "sessionType"])
|
||||||
|
callBack(result, conversationID)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getConversationListSplit(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetConversationListSplit(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int: "offset"], methodCall[int: "count"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getInputStates(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetInputStates(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[string: "userID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getMultipleConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetMultipleConversation(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "conversationIDList"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getOneConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetOneConversation(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int32: "sessionType"], methodCall[string: "sourceID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTotalUnreadMsgCount(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetTotalUnreadMsgCount(BaseCallback(result: result), methodCall[string: "operationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func hideAllConversations(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkHideAllConversations(BaseCallback(result: result), methodCall[string: "operationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func hideConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkHideConversation(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func markConversationMessageAsRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkMarkConversationMessageAsRead(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func searchConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkSearchConversation(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "name"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func setConversationDraft(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkSetConversationDraft(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[string: "draftText"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func setConversationListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkSetConversationListener(ConversationListener(channel: channel))
|
Open_im_sdkSetConversationListener(ConversationListener(channel: channel))
|
||||||
callBack(result)
|
callBack(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getAllConversationList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func setConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkGetAllConversationList(BaseCallback(result: result), methodCall[string: "operationID"])
|
Open_im_sdkSetConversation(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[jsonString: "req"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func getConversationListSplit(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func searchConversations(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkGetConversationListSplit(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int: "offset"], methodCall[int: "count"])
|
Open_im_sdkSearchConversation(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "name"])
|
||||||
}
|
|
||||||
|
|
||||||
func getOneConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetOneConversation(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int32: "sessionType"], methodCall[string: "sourceID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getMultipleConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetMultipleConversation(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "conversationIDList"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func setConversationDraft(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetConversationDraft(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[string: "draftText"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func pinConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkPinConversation(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[bool: "isPinned"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func hideConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkHideConversation(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func markConversationMessageAsRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkMarkConversationMessageAsRead(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getTotalUnreadMsgCount(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetTotalUnreadMsgCount(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getConversationIDBySessionType(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
let conversationID = Open_im_sdkGetConversationIDBySessionType( methodCall[string: "operationID"],methodCall[string: "sourceID"], methodCall[int: "sessionType"])
|
|
||||||
callBack(result, conversationID)
|
|
||||||
}
|
|
||||||
|
|
||||||
func setConversationRecvMessageOpt(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetConversationRecvMessageOpt(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[int: "status"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getConversationRecvMessageOpt(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetConversationRecvMessageOpt(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "conversationIDList"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func setConversationPrivateChat(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetConversationPrivateChat(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"],methodCall[bool: "isPrivate"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func clearConversationAndDeleteAllMsg(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkClearConversationAndDeleteAllMsg(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func deleteConversationAndDeleteAllMsg(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkDeleteConversationAndDeleteAllMsg(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func deleteAllConversationFromLocal(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkDeleteAllConversationFromLocal(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func resetConversationGroupAtType(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkResetConversationGroupAtType(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getAtAllTag(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
callBack(result, Open_im_sdkGetAtAllTag(methodCall[string: "operationID"]))
|
|
||||||
}
|
|
||||||
|
|
||||||
func setGlobalRecvMessageOpt(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetGlobalRecvMessageOpt(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int: "status"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func setConversationBurnDuration(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetConversationBurnDuration(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[int32: "burnDuration"])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class ConversationListener: NSObject, Open_im_sdk_callbackOnConversationListenerProtocol {
|
public class ConversationListener: NSObject, Open_im_sdk_callbackOnConversationListenerProtocol {
|
||||||
|
|
||||||
private let channel:FlutterMethodChannel
|
private let channel: FlutterMethodChannel
|
||||||
|
|
||||||
init(channel:FlutterMethodChannel) {
|
init(channel: FlutterMethodChannel) {
|
||||||
self.channel = channel
|
self.channel = channel
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,25 +117,31 @@ public class ConversationListener: NSObject, Open_im_sdk_callbackOnConversationL
|
|||||||
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onConversationChanged", errCode: nil, errMsg: nil, data: conversationList)
|
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onConversationChanged", errCode: nil, errMsg: nil, data: conversationList)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func onConversationUserInputStatusChanged(_ change: String?) {
|
||||||
|
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onConversationUserInputStatusChanged", errCode: nil, errMsg: nil, data: change)
|
||||||
|
}
|
||||||
|
|
||||||
public func onNewConversation(_ conversationList: String?) {
|
public func onNewConversation(_ conversationList: String?) {
|
||||||
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onNewConversation", errCode: nil, errMsg: nil, data: conversationList)
|
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onNewConversation", errCode: nil, errMsg: nil, data: conversationList)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func onSyncServerFailed() {
|
public func onSyncServerFailed(_ reinstalled: Bool) {
|
||||||
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onSyncServerFailed", errCode: nil, errMsg: nil, data: nil)
|
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onSyncServerFailed", errCode: nil, errMsg: nil, data: reinstalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func onSyncServerFinish() {
|
public func onSyncServerFinish(_ reinstalled: Bool) {
|
||||||
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onSyncServerFinish", errCode: nil, errMsg: nil, data: nil)
|
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onSyncServerFinish", errCode: nil, errMsg: nil, data: reinstalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func onSyncServerStart() {
|
public func onSyncServerProgress(_ progress: Int) {
|
||||||
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onSyncServerStart", errCode: nil, errMsg: nil, data: nil)
|
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onSyncServerProgress", errCode: nil, errMsg: nil, data: progress)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func onSyncServerStart(_ reinstalled: Bool) {
|
||||||
|
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onSyncServerStart", errCode: nil, errMsg: nil, data: reinstalled)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func onTotalUnreadMessageCountChanged(_ totalUnreadCount: Int32) {
|
public func onTotalUnreadMessageCountChanged(_ totalUnreadCount: Int32) {
|
||||||
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onTotalUnreadMessageCountChanged", errCode: nil, errMsg: nil, data: totalUnreadCount)
|
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onTotalUnreadMessageCountChanged", errCode: nil, errMsg: nil, data: totalUnreadCount)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,64 +5,36 @@ public class FriendshipManager: BaseServiceManager {
|
|||||||
|
|
||||||
public override func registerHandlers() {
|
public override func registerHandlers() {
|
||||||
super.registerHandlers()
|
super.registerHandlers()
|
||||||
self["setFriendListener"] = setFriendListener
|
self["acceptFriendApplication"] = acceptFriendApplication
|
||||||
self["getFriendsInfo"] = getFriendsInfo
|
|
||||||
self["addFriend"] = addFriend
|
|
||||||
self["getFriendApplicationListAsRecipient"] = getFriendApplicationListAsRecipient
|
|
||||||
self["getFriendApplicationListAsApplicant"] = getFriendApplicationListAsApplicant
|
|
||||||
self["getFriendList"] = getFriendList
|
|
||||||
self["setFriendRemark"] = setFriendRemark
|
|
||||||
self["addBlacklist"] = addBlacklist
|
self["addBlacklist"] = addBlacklist
|
||||||
self["getBlacklist"] = getBlacklist
|
self["addFriend"] = addFriend
|
||||||
self["removeBlacklist"] = removeBlacklist
|
|
||||||
self["checkFriend"] = checkFriend
|
self["checkFriend"] = checkFriend
|
||||||
self["deleteFriend"] = deleteFriend
|
self["deleteFriend"] = deleteFriend
|
||||||
self["acceptFriendApplication"] = acceptFriendApplication
|
self["getBlacklist"] = getBlacklist
|
||||||
|
self["getFriendApplicationListAsApplicant"] = getFriendApplicationListAsApplicant
|
||||||
|
self["getFriendApplicationListAsRecipient"] = getFriendApplicationListAsRecipient
|
||||||
|
self["getFriendList"] = getFriendList
|
||||||
|
self["getFriendListPage"] = getFriendListPage
|
||||||
|
self["getFriendsInfo"] = getFriendsInfo
|
||||||
self["refuseFriendApplication"] = refuseFriendApplication
|
self["refuseFriendApplication"] = refuseFriendApplication
|
||||||
|
self["removeBlacklist"] = removeBlacklist
|
||||||
self["searchFriends"] = searchFriends
|
self["searchFriends"] = searchFriends
|
||||||
|
self["setFriendListener"] = setFriendListener
|
||||||
|
self["updateFriends"] = updateFriends
|
||||||
}
|
}
|
||||||
|
|
||||||
func setFriendListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func acceptFriendApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
Open_im_sdkSetFriendListener(FriendshipListener(channel: channel))
|
Open_im_sdkAcceptFriendApplication(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
||||||
callBack(result)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getFriendsInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func addBlacklist(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
Open_im_sdkGetSpecifiedFriendsInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "userIDList"])
|
Open_im_sdkAddBlack(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"], methodCall[string: "ex"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func addFriend(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func addFriend(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
Open_im_sdkAddFriend(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
Open_im_sdkAddFriend(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
||||||
}
|
}
|
||||||
|
|
||||||
func getFriendApplicationListAsRecipient(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetFriendApplicationListAsRecipient(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getFriendApplicationListAsApplicant(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetFriendApplicationListAsApplicant(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getFriendList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetFriendList(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func setFriendRemark(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetFriendRemark(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
|
||||||
}
|
|
||||||
|
|
||||||
func addBlacklist(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkAddBlack(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getBlacklist(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetBlackList(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func removeBlacklist(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkRemoveBlack(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func checkFriend(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func checkFriend(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
Open_im_sdkCheckFriend(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "userIDList"])
|
Open_im_sdkCheckFriend(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "userIDList"])
|
||||||
}
|
}
|
||||||
@@ -71,17 +43,50 @@ public class FriendshipManager: BaseServiceManager {
|
|||||||
Open_im_sdkDeleteFriend(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"])
|
Open_im_sdkDeleteFriend(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func acceptFriendApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func getBlacklist(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
Open_im_sdkAcceptFriendApplication(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
Open_im_sdkGetBlackList(BaseCallback(result: result), methodCall[string: "operationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFriendApplicationListAsApplicant(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkGetFriendApplicationListAsApplicant(BaseCallback(result: result), methodCall[string: "operationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFriendApplicationListAsRecipient(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkGetFriendApplicationListAsRecipient(BaseCallback(result: result), methodCall[string: "operationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFriendList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkGetFriendList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[bool: "filterBlack"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFriendListPage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkGetFriendListPage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int32: "offset"], methodCall[int32: "count"], methodCall[bool: "filterBlack"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFriendsInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkGetSpecifiedFriendsInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "userIDList"], methodCall[bool: "filterBlack"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func refuseFriendApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func refuseFriendApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
Open_im_sdkRefuseFriendApplication(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
Open_im_sdkRefuseFriendApplication(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func removeBlacklist(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkRemoveBlack(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"])
|
||||||
|
}
|
||||||
|
|
||||||
func searchFriends(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func searchFriends(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
Open_im_sdkSearchFriends(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParam"])
|
Open_im_sdkSearchFriends(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParam"])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setFriendListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkSetFriendListener(FriendshipListener(channel: channel))
|
||||||
|
callBack(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateFriends(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkUpdateFriends(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "req"])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class FriendshipListener: NSObject, Open_im_sdk_callbackOnFriendshipListenerProtocol {
|
public class FriendshipListener: NSObject, Open_im_sdk_callbackOnFriendshipListenerProtocol {
|
||||||
@@ -127,4 +132,3 @@ public class FriendshipListener: NSObject, Open_im_sdk_callbackOnFriendshipListe
|
|||||||
CommonUtil.emitEvent(channel: channel, method: "friendListener", type: "onFriendInfoChanged", errCode: nil, errMsg: nil, data: friendInfo)
|
CommonUtil.emitEvent(channel: channel, method: "friendListener", type: "onFriendInfoChanged", errCode: nil, errMsg: nil, data: friendInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,168 +5,155 @@ public class GroupManager: BaseServiceManager {
|
|||||||
|
|
||||||
public override func registerHandlers() {
|
public override func registerHandlers() {
|
||||||
super.registerHandlers()
|
super.registerHandlers()
|
||||||
self["setGroupListener"] = setGroupListener
|
|
||||||
self["inviteUserToGroup"] = inviteUserToGroup
|
|
||||||
self["kickGroupMember"] = kickGroupMember
|
|
||||||
self["getGroupMembersInfo"] = getGroupMembersInfo
|
|
||||||
self["getGroupMemberList"] = getGroupMemberList
|
|
||||||
self["getJoinedGroupList"] = getJoinedGroupList
|
|
||||||
self["createGroup"] = createGroup
|
|
||||||
self["setGroupInfo"] = setGroupInfo
|
|
||||||
self["getGroupsInfo"] = getGroupsInfo
|
|
||||||
self["joinGroup"] = joinGroup
|
|
||||||
self["quitGroup"] = quitGroup
|
|
||||||
self["transferGroupOwner"] = transferGroupOwner
|
|
||||||
self["getGroupApplicationListAsRecipient"] = getGroupApplicationListAsRecipient
|
|
||||||
self["getGroupApplicationListAsApplicant"] = getGroupApplicationListAsApplicant
|
|
||||||
self["acceptGroupApplication"] = acceptGroupApplication
|
self["acceptGroupApplication"] = acceptGroupApplication
|
||||||
self["refuseGroupApplication"] = refuseGroupApplication
|
|
||||||
self["dismissGroup"] = dismissGroup
|
|
||||||
self["changeGroupMute"] = changeGroupMute
|
|
||||||
self["changeGroupMemberMute"] = changeGroupMemberMute
|
self["changeGroupMemberMute"] = changeGroupMemberMute
|
||||||
self["setGroupMemberNickname"] = setGroupMemberNickname
|
self["changeGroupMute"] = changeGroupMute
|
||||||
self["searchGroups"] = searchGroups
|
self["createGroup"] = createGroup
|
||||||
self["setGroupMemberRoleLevel"] = setGroupMemberRoleLevel
|
self["dismissGroup"] = dismissGroup
|
||||||
|
self["getGroupApplicationListAsApplicant"] = getGroupApplicationListAsApplicant
|
||||||
|
self["getGroupApplicationListAsRecipient"] = getGroupApplicationListAsRecipient
|
||||||
|
self["getGroupMemberList"] = getGroupMemberList
|
||||||
self["getGroupMemberListByJoinTimeFilter"] = getGroupMemberListByJoinTimeFilter
|
self["getGroupMemberListByJoinTimeFilter"] = getGroupMemberListByJoinTimeFilter
|
||||||
self["setGroupVerification"] = setGroupVerification
|
|
||||||
self["setGroupLookMemberInfo"] = setGroupLookMemberInfo
|
|
||||||
self["setGroupApplyMemberFriend"] = setGroupApplyMemberFriend
|
|
||||||
self["getGroupMemberOwnerAndAdmin"] = getGroupMemberOwnerAndAdmin
|
self["getGroupMemberOwnerAndAdmin"] = getGroupMemberOwnerAndAdmin
|
||||||
self["searchGroupMembers"] = searchGroupMembers
|
self["getGroupMembersInfo"] = getGroupMembersInfo
|
||||||
self["setGroupMemberInfo"] = setGroupMemberInfo
|
self["getGroupsInfo"] = getGroupsInfo
|
||||||
|
self["getJoinedGroupList"] = getJoinedGroupList
|
||||||
|
self["getJoinedGroupListPage"] = getJoinedGroupListPage
|
||||||
|
self["getUsersInGroup"] = getUsersInGroup
|
||||||
|
self["inviteUserToGroup"] = inviteUserToGroup
|
||||||
self["isJoinGroup"] = isJoinGroup
|
self["isJoinGroup"] = isJoinGroup
|
||||||
|
self["joinGroup"] = joinGroup
|
||||||
|
self["kickGroupMember"] = kickGroupMember
|
||||||
|
self["quitGroup"] = quitGroup
|
||||||
|
self["refuseGroupApplication"] = refuseGroupApplication
|
||||||
|
self["searchGroupMembers"] = searchGroupMembers
|
||||||
|
self["searchGroups"] = searchGroups
|
||||||
|
self["setGroupInfo"] = setGroupInfo
|
||||||
|
self["setGroupListener"] = setGroupListener
|
||||||
|
self["setGroupMemberInfo"] = setGroupMemberInfo
|
||||||
|
self["transferGroupOwner"] = transferGroupOwner
|
||||||
}
|
}
|
||||||
|
|
||||||
func setGroupListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func acceptGroupApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkSetGroupListener(GroupListener(channel: channel))
|
Open_im_sdkAcceptGroupApplication(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string: "userID"], methodCall[string: "handleMsg"])
|
||||||
callBack(result)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func inviteUserToGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func changeGroupMemberMute(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkInviteUserToGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string: "reason"],
|
Open_im_sdkChangeGroupMemberMute(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string:"userID"], methodCall[int:"seconds"])
|
||||||
methodCall[jsonString: "userIDList"])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func kickGroupMember(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func changeGroupMute(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkKickGroupMember(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string: "reason"],
|
Open_im_sdkChangeGroupMute(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[bool: "mute"])
|
||||||
methodCall[jsonString: "userIDList"])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getGroupMembersInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func createGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkGetSpecifiedGroupMembersInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[jsonString: "userIDList"])
|
Open_im_sdkCreateGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
||||||
}
|
}
|
||||||
|
|
||||||
func getGroupMemberList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func dismissGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkDismissGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getGroupApplicationListAsApplicant(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetGroupApplicationListAsApplicant(BaseCallback(result: result), methodCall[string: "operationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getGroupApplicationListAsRecipient(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetGroupApplicationListAsRecipient(BaseCallback(result: result), methodCall[string: "operationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getGroupMemberList(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkGetGroupMemberList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[int32: "filter"],
|
Open_im_sdkGetGroupMemberList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[int32: "filter"],
|
||||||
methodCall[int32: "offset"], methodCall[int32: "count"])
|
methodCall[int32: "offset"], methodCall[int32: "count"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func getJoinedGroupList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func getGroupMemberListByJoinTimeFilter(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkGetJoinedGroupList(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func createGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkCreateGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
|
||||||
}
|
|
||||||
|
|
||||||
func setGroupInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetGroupInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "groupInfo"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getGroupsInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetSpecifiedGroupsInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "groupIDList"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func joinGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkJoinGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string: "reason"], methodCall[int32: "joinSource"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func quitGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkQuitGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func transferGroupOwner(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkTransferGroupOwner(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string: "userID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getGroupApplicationListAsRecipient(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetGroupApplicationListAsRecipient(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getGroupApplicationListAsApplicant(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetGroupApplicationListAsApplicant(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func acceptGroupApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkAcceptGroupApplication(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string: "userID"], methodCall[string: "handleMsg"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func refuseGroupApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkRefuseGroupApplication(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string: "userID"], methodCall[string: "handleMsg"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func dismissGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkDismissGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func changeGroupMute(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkChangeGroupMute(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[bool: "mute"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func changeGroupMemberMute(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkChangeGroupMemberMute(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string:"userID"],methodCall[int:"seconds"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func setGroupMemberNickname(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetGroupMemberNickname(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string:"userID"],methodCall[string:"groupNickname"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func searchGroups(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSearchGroups(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParam"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func setGroupMemberRoleLevel(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetGroupMemberRoleLevel(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string:"userID"],methodCall[int:"roleLevel"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getGroupMemberListByJoinTimeFilter(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetGroupMemberListByJoinTimeFilter(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[int32: "offset"], methodCall[int32: "count"], methodCall[int64: "joinTimeBegin"], methodCall[int64: "joinTimeEnd"], methodCall[jsonString: "excludeUserIDList"])
|
Open_im_sdkGetGroupMemberListByJoinTimeFilter(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[int32: "offset"], methodCall[int32: "count"], methodCall[int64: "joinTimeBegin"], methodCall[int64: "joinTimeEnd"], methodCall[jsonString: "excludeUserIDList"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func setGroupVerification(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func getGroupMemberOwnerAndAdmin(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkSetGroupVerification(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[int32:"needVerification"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func setGroupLookMemberInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetGroupLookMemberInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[int32:"status"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func setGroupApplyMemberFriend(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetGroupApplyMemberFriend(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[int32:"status"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func getGroupMemberOwnerAndAdmin(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetGroupMemberOwnerAndAdmin(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
|
Open_im_sdkGetGroupMemberOwnerAndAdmin(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func searchGroupMembers(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func getGroupMembersInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetSpecifiedGroupMembersInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[jsonString: "userIDList"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getGroupsInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetSpecifiedGroupsInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "groupIDList"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getJoinedGroupList(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetJoinedGroupList(BaseCallback(result: result), methodCall[string: "operationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getJoinedGroupListPage(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetJoinedGroupListPage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int32: "offset"], methodCall[int32: "count"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getUsersInGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkGetUsersInGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"],
|
||||||
|
methodCall[jsonString: "userIDs"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func inviteUserToGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkInviteUserToGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string: "reason"],
|
||||||
|
methodCall[jsonString: "userIDList"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func isJoinGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkIsJoinGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func joinGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkJoinGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string:
|
||||||
|
"reason"], methodCall[int32: "joinSource"], methodCall[jsonString: "ex"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func kickGroupMember(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkKickGroupMember(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string: "reason"],
|
||||||
|
methodCall[jsonString: "userIDList"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func quitGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkQuitGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func refuseGroupApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkRefuseGroupApplication(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string: "userID"], methodCall[string: "handleMsg"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func searchGroupMembers(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkSearchGroupMembers(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParam"])
|
Open_im_sdkSearchGroupMembers(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParam"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func setGroupMemberInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func searchGroups(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkSearchGroups(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParam"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func setGroupInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkSetGroupInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "groupInfo"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func setGroupListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkSetGroupListener(GroupListener(channel: channel))
|
||||||
|
callBack(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func setGroupMemberInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkSetGroupMemberInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "info"])
|
Open_im_sdkSetGroupMemberInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "info"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func isJoinGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func transferGroupOwner(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkIsJoinGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
|
Open_im_sdkTransferGroupOwner(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[string: "userID"])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GroupListener: NSObject, Open_im_sdk_callbackOnGroupListenerProtocol {
|
public class GroupListener: NSObject, Open_im_sdk_callbackOnGroupListenerProtocol {
|
||||||
|
|
||||||
private let channel:FlutterMethodChannel
|
private let channel: FlutterMethodChannel
|
||||||
|
|
||||||
init(channel:FlutterMethodChannel) {
|
init(channel: FlutterMethodChannel) {
|
||||||
self.channel = channel
|
self.channel = channel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ public class IMMananger: BaseServiceManager {
|
|||||||
self["logout"] = logout
|
self["logout"] = logout
|
||||||
self["getLoginStatus"] = getLoginStatus
|
self["getLoginStatus"] = getLoginStatus
|
||||||
self["uploadFile"] = uploadFile
|
self["uploadFile"] = uploadFile
|
||||||
|
self["uploadLogs"] = uploadLogs
|
||||||
|
self["logs"] = logs
|
||||||
self["updateFcmToken"] = updateFcmToken
|
self["updateFcmToken"] = updateFcmToken
|
||||||
self["setAppBackgroundStatus"] = setAppBackgroundStatus
|
self["setAppBackgroundStatus"] = setAppBackgroundStatus
|
||||||
self["networkStatusChanged"] = networkStatusChanged
|
self["networkStatusChanged"] = networkStatusChanged
|
||||||
@@ -84,8 +86,18 @@ public class IMMananger: BaseServiceManager {
|
|||||||
Open_im_sdkUploadFile(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString(), UploadFileListener(channel: self.channel,id: methodCall[string: "id"]))
|
Open_im_sdkUploadFile(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString(), UploadFileListener(channel: self.channel,id: methodCall[string: "id"]))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func uploadLogs(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkUploadLogs(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int: "line"], methodCall[string: "ex"],
|
||||||
|
UploadLogsListener(channel: self.channel))
|
||||||
|
}
|
||||||
|
|
||||||
|
func logs(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
Open_im_sdkLogs(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int: "logLevel"], methodCall[string: "file"], methodCall[int: "line"], methodCall[string: "msgs"], methodCall[string: "err"], methodCall[string: "keyAndValue"])
|
||||||
|
}
|
||||||
|
|
||||||
func updateFcmToken(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
func updateFcmToken(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkUpdateFcmToken(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "fcmToken"])
|
Open_im_sdkUpdateFcmToken(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "fcmToken"], methodCall[int64:
|
||||||
|
"expireTime"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func setAppBackgroundStatus(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
func setAppBackgroundStatus(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
@@ -98,6 +110,10 @@ public class IMMananger: BaseServiceManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class ConnListener: NSObject, Open_im_sdk_callbackOnConnListenerProtocol {
|
public class ConnListener: NSObject, Open_im_sdk_callbackOnConnListenerProtocol {
|
||||||
|
public func onUserTokenInvalid(_ errMsg: String?) {
|
||||||
|
CommonUtil.emitEvent(channel: self.channel, method: "connectListener", type: "onUserTokenInvalid", errCode: nil, errMsg: errMsg, data: nil)
|
||||||
|
}
|
||||||
|
|
||||||
private let channel:FlutterMethodChannel
|
private let channel:FlutterMethodChannel
|
||||||
|
|
||||||
init(channel:FlutterMethodChannel) {
|
init(channel:FlutterMethodChannel) {
|
||||||
@@ -125,6 +141,23 @@ public class ConnListener: NSObject, Open_im_sdk_callbackOnConnListenerProtocol
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class UploadLogsListener: NSObject, Open_im_sdk_callbackUploadLogProgressProtocol {
|
||||||
|
|
||||||
|
private let channel:FlutterMethodChannel
|
||||||
|
|
||||||
|
init(channel:FlutterMethodChannel) {
|
||||||
|
self.channel = channel
|
||||||
|
}
|
||||||
|
|
||||||
|
public func onProgress(_ current: Int64, size: Int64) {
|
||||||
|
var values: [String: Any] = [:]
|
||||||
|
values["current"] = current
|
||||||
|
values["size"] = size
|
||||||
|
CommonUtil.emitEvent(channel: channel, method: "uploadLogsListener", type: "onProgress", errCode: nil, errMsg: nil, data: values)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public class UploadFileListener: NSObject, Open_im_sdk_callbackUploadFileCallbackProtocol {
|
public class UploadFileListener: NSObject, Open_im_sdk_callbackUploadFileCallbackProtocol {
|
||||||
|
|
||||||
private let channel:FlutterMethodChannel
|
private let channel:FlutterMethodChannel
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import OpenIMCore
|
|||||||
|
|
||||||
public class MessageManager: BaseServiceManager {
|
public class MessageManager: BaseServiceManager {
|
||||||
private let KEY_ID: String = "id"
|
private let KEY_ID: String = "id"
|
||||||
// private var listeners: [String: AdvancedMsgListener] = [:]
|
|
||||||
|
|
||||||
public override func registerHandlers() {
|
public override func registerHandlers() {
|
||||||
super.registerHandlers()
|
super.registerHandlers()
|
||||||
@@ -46,6 +45,7 @@ public class MessageManager: BaseServiceManager {
|
|||||||
|
|
||||||
self["findMessageList"] = findMessageList
|
self["findMessageList"] = findMessageList
|
||||||
self["setMessageLocalEx"] = setMessageLocalEx
|
self["setMessageLocalEx"] = setMessageLocalEx
|
||||||
|
self["setAppBadge"] = setAppBadge
|
||||||
|
|
||||||
self["sendMessageNotOss"] = sendMessageNotOss
|
self["sendMessageNotOss"] = sendMessageNotOss
|
||||||
self["createImageMessageByURL"] = createImageMessageByURL
|
self["createImageMessageByURL"] = createImageMessageByURL
|
||||||
@@ -53,8 +53,6 @@ public class MessageManager: BaseServiceManager {
|
|||||||
self["createVideoMessageByURL"] = createVideoMessageByURL
|
self["createVideoMessageByURL"] = createVideoMessageByURL
|
||||||
self["createFileMessageByURL"] = createFileMessageByURL
|
self["createFileMessageByURL"] = createFileMessageByURL
|
||||||
self["setCustomBusinessListener"] = setCustomBusinessListener
|
self["setCustomBusinessListener"] = setCustomBusinessListener
|
||||||
self["setMessageKvInfoListener"] = setMessageKvInfoListener
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func setAdvancedMsgListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func setAdvancedMsgListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
@@ -67,7 +65,7 @@ public class MessageManager: BaseServiceManager {
|
|||||||
func sendMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func sendMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
let sendMsgProgressListener: SendMsgProgressListener = SendMsgProgressListener(channel: channel,result: result,methodCall: methodCall)
|
let sendMsgProgressListener: SendMsgProgressListener = SendMsgProgressListener(channel: channel,result: result,methodCall: methodCall)
|
||||||
Open_im_sdkSendMessage(sendMsgProgressListener, methodCall[string: "operationID"], methodCall[jsonString: "message"], methodCall[string: "userID"],
|
Open_im_sdkSendMessage(sendMsgProgressListener, methodCall[string: "operationID"], methodCall[jsonString: "message"], methodCall[string: "userID"],
|
||||||
methodCall[string: "groupID"], methodCall[jsonString: "offlinePushInfo"])
|
methodCall[string: "groupID"], methodCall[string: "channelID"],methodCall[jsonString: "offlinePushInfo"], methodCall[bool: "isOnlineOnly"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func revokeMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func revokeMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
@@ -97,7 +95,7 @@ public class MessageManager: BaseServiceManager {
|
|||||||
|
|
||||||
func insertGroupMessageToLocalStorage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func insertGroupMessageToLocalStorage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
Open_im_sdkInsertGroupMessageToLocalStorage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "message"],
|
Open_im_sdkInsertGroupMessageToLocalStorage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "message"],
|
||||||
methodCall[string: "groupID"], methodCall[string: "senderID"])
|
methodCall[string: "groupID"], methodCall[string: "channelID"],methodCall[string: "senderID"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func markMessagesAsReadByMsgID(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func markMessagesAsReadByMsgID(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
@@ -223,14 +221,17 @@ public class MessageManager: BaseServiceManager {
|
|||||||
Open_im_sdkSetMessageLocalEx(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[string: "clientMsgID"], methodCall[string: "localEx"])
|
Open_im_sdkSetMessageLocalEx(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[string: "clientMsgID"], methodCall[string: "localEx"])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setAppBadge(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkSetAppBadge(BaseCallback(result: result), methodCall[string: "operationID"], Int32(methodCall[int64: "count"]))
|
||||||
|
}
|
||||||
|
|
||||||
func sendMessageNotOss(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func sendMessageNotOss(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
let sendMsgProgressListener: SendMsgProgressListener = SendMsgProgressListener(channel: channel,result: result,methodCall: methodCall)
|
let sendMsgProgressListener: SendMsgProgressListener = SendMsgProgressListener(channel: channel,result: result,methodCall: methodCall)
|
||||||
Open_im_sdkSendMessageNotOss(sendMsgProgressListener, methodCall[string: "operationID"], methodCall[jsonString: "message"], methodCall[string: "userID"],
|
Open_im_sdkSendMessageNotOss(sendMsgProgressListener, methodCall[string: "operationID"], methodCall[jsonString: "message"], methodCall[string: "userID"], methodCall[string: "groupID"], methodCall[string: "channelID"],methodCall[jsonString: "offlinePushInfo"], methodCall[bool: "isOnlineOnly"])
|
||||||
methodCall[string: "groupID"], methodCall[jsonString: "offlinePushInfo"])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func createImageMessageByURL(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func createImageMessageByURL(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
callBack(result, Open_im_sdkCreateImageMessageByURL(methodCall[string: "operationID"], methodCall[jsonString: "sourcePicture"], methodCall[jsonString: "bigPicture"], methodCall[jsonString: "snapshotPicture"]))
|
callBack(result, Open_im_sdkCreateImageMessageByURL(methodCall[string: "operationID"], methodCall[string: "sourcePath"], methodCall[jsonString: "sourcePicture"], methodCall[jsonString: "bigPicture"], methodCall[jsonString: "snapshotPicture"]))
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSoundMessageByURL(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func createSoundMessageByURL(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
@@ -249,11 +250,6 @@ public class MessageManager: BaseServiceManager {
|
|||||||
Open_im_sdkSetCustomBusinessListener(CustomBusinessListener(channel: channel))
|
Open_im_sdkSetCustomBusinessListener(CustomBusinessListener(channel: channel))
|
||||||
callBack(result)
|
callBack(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
func setMessageKvInfoListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkSetMessageKvInfoListener(MessageKvInfoListener(channel: channel))
|
|
||||||
callBack(result)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SendMsgProgressListener: NSObject, Open_im_sdk_callbackSendMsgCallBackProtocol {
|
public class SendMsgProgressListener: NSObject, Open_im_sdk_callbackSendMsgCallBackProtocol {
|
||||||
@@ -315,37 +311,6 @@ public class AdvancedMsgListener: NSObject, Open_im_sdk_callbackOnAdvancedMsgLis
|
|||||||
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvC2CReadReceipt", errCode: nil, errMsg: nil, data: values)
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvC2CReadReceipt", errCode: nil, errMsg: nil, data: values)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func onRecvGroupReadReceipt(_ groupMsgReceiptList: String?) {
|
|
||||||
var values: [String: Any] = [:]
|
|
||||||
values["id"] = id
|
|
||||||
values["groupMsgReceiptList"] = groupMsgReceiptList
|
|
||||||
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvGroupReadReceipt", errCode: nil, errMsg: nil, data: values)
|
|
||||||
}
|
|
||||||
|
|
||||||
public func onRecvMessageExtensionsAdded(_ msgID: String?, reactionExtensionList: String?) {
|
|
||||||
var values: [String: Any] = [:]
|
|
||||||
values["id"] = id
|
|
||||||
values["msgID"] = msgID
|
|
||||||
values["reactionExtensionList"] = reactionExtensionList
|
|
||||||
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageExtensionsAdded", errCode: nil, errMsg: nil, data: values)
|
|
||||||
}
|
|
||||||
|
|
||||||
public func onRecvMessageExtensionsChanged(_ msgID: String?, reactionExtensionList: String?) {
|
|
||||||
var values: [String: Any] = [:]
|
|
||||||
values["id"] = id
|
|
||||||
values["msgID"] = msgID
|
|
||||||
values["reactionExtensionList"] = reactionExtensionList
|
|
||||||
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageExtensionsChanged", errCode: nil, errMsg: nil, data: values)
|
|
||||||
}
|
|
||||||
|
|
||||||
public func onRecvMessageExtensionsDeleted(_ msgID: String?, reactionExtensionKeyList: String?) {
|
|
||||||
var values: [String: Any] = [:]
|
|
||||||
values["id"] = id
|
|
||||||
values["msgID"] = msgID
|
|
||||||
values["reactionExtensionKeyList"] = reactionExtensionKeyList
|
|
||||||
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageExtensionsDeleted", errCode: nil, errMsg: nil, data: values)
|
|
||||||
}
|
|
||||||
|
|
||||||
public func onRecvNewMessage(_ message: String?) {
|
public func onRecvNewMessage(_ message: String?) {
|
||||||
var values: [String: Any] = [:]
|
var values: [String: Any] = [:]
|
||||||
values["id"] = id
|
values["id"] = id
|
||||||
@@ -353,14 +318,19 @@ public class AdvancedMsgListener: NSObject, Open_im_sdk_callbackOnAdvancedMsgLis
|
|||||||
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvNewMessage", errCode: nil, errMsg: nil, data: values)
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvNewMessage", errCode: nil, errMsg: nil, data: values)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func onRecvOfflineNewMessage(_ message: String?) {
|
||||||
|
var values: [String: Any] = [:]
|
||||||
|
values["id"] = id
|
||||||
|
values["message"] = message
|
||||||
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvOfflineNewMessage", errCode: nil, errMsg: nil, data: values);
|
||||||
|
}
|
||||||
|
|
||||||
public func onRecvOfflineNewMessage(_ message: String?) {
|
public func onRecvOnlineOnlyMessage(_ message: String?) {
|
||||||
var values: [String: Any] = [:]
|
var values: [String: Any] = [:]
|
||||||
values["id"] = id
|
values["id"] = id
|
||||||
values["message"] = message
|
values["message"] = message
|
||||||
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvOfflineNewMessage", errCode: nil, errMsg: nil, data: values);
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvOnlineOnlyMessage", errCode: nil, errMsg: nil, data: values);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CustomBusinessListener: NSObject, Open_im_sdk_callbackOnCustomBusinessListenerProtocol {
|
public class CustomBusinessListener: NSObject, Open_im_sdk_callbackOnCustomBusinessListenerProtocol {
|
||||||
@@ -374,19 +344,3 @@ public class CustomBusinessListener: NSObject, Open_im_sdk_callbackOnCustomBusin
|
|||||||
CommonUtil.emitEvent(channel: channel, method: "customBusinessListener", type: "onRecvCustomBusinessMessage", errCode: nil, errMsg: nil, data: s)
|
CommonUtil.emitEvent(channel: channel, method: "customBusinessListener", type: "onRecvCustomBusinessMessage", errCode: nil, errMsg: nil, data: s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class MessageKvInfoListener: NSObject, Open_im_sdk_callbackOnMessageKvInfoListenerProtocol {
|
|
||||||
|
|
||||||
|
|
||||||
private let channel: FlutterMethodChannel
|
|
||||||
|
|
||||||
init(channel: FlutterMethodChannel) {
|
|
||||||
self.channel = channel
|
|
||||||
}
|
|
||||||
|
|
||||||
public func onMessageKvInfoChanged(_ s: String?) {
|
|
||||||
CommonUtil.emitEvent(channel: channel, method: "messageKvInfoListener", type: "onMessageKvInfoChanged", errCode: nil, errMsg: nil, data: s)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ public class UserManager: BaseServiceManager {
|
|||||||
self["unsubscribeUsersStatus"] = unsubscribeUsersStatus
|
self["unsubscribeUsersStatus"] = unsubscribeUsersStatus
|
||||||
self["getSubscribeUsersStatus"] = getSubscribeUsersStatus
|
self["getSubscribeUsersStatus"] = getSubscribeUsersStatus
|
||||||
self["getUserStatus"] = getUserStatus
|
self["getUserStatus"] = getUserStatus
|
||||||
self["getUsersInfoStranger"] = getUsersInfoStranger
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func setUserListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func setUserListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
@@ -48,13 +47,21 @@ public class UserManager: BaseServiceManager {
|
|||||||
func getUserStatus(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func getUserStatus(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
Open_im_sdkGetUserStatus(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "userIDs"])
|
Open_im_sdkGetUserStatus(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "userIDs"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUsersInfoStranger(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
Open_im_sdkGetUsersInfoStranger(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "userIDs"], methodCall[string: "groupID"])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class UserListener: NSObject, Open_im_sdk_callbackOnUserListenerProtocol {
|
public class UserListener: NSObject, Open_im_sdk_callbackOnUserListenerProtocol {
|
||||||
|
public func onUserCommandAdd(_ userCommand: String?) {
|
||||||
|
CommonUtil.emitEvent(channel: self.channel, method: "userListener", type: "onUserCommandAdd", errCode: nil, errMsg: nil, data: userCommand)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func onUserCommandDelete(_ userCommand: String?) {
|
||||||
|
CommonUtil.emitEvent(channel: self.channel, method: "userListener", type: "onUserCommandDelete", errCode: nil, errMsg: nil, data: userCommand)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func onUserCommandUpdate(_ userCommand: String?) {
|
||||||
|
CommonUtil.emitEvent(channel: self.channel, method: "userListener", type: "onUserCommandUpdate", errCode: nil, errMsg: nil, data: userCommand)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private let channel:FlutterMethodChannel
|
private let channel:FlutterMethodChannel
|
||||||
|
|
||||||
|
|||||||
@@ -8,9 +8,7 @@ public class SwiftFlutterOpenimSdkPlugin: NSObject, FlutterPlugin {
|
|||||||
let messageManager: MessageManager
|
let messageManager: MessageManager
|
||||||
let groupManager: GroupManager
|
let groupManager: GroupManager
|
||||||
let userManger: UserManager
|
let userManger: UserManager
|
||||||
// let signalingManager: SignalingManager
|
let channelManager: ChannelManager
|
||||||
// let workMomentsManager: WorkMomentsManager
|
|
||||||
// let organizationManager: OrganizationManager
|
|
||||||
|
|
||||||
init(channel: FlutterMethodChannel) {
|
init(channel: FlutterMethodChannel) {
|
||||||
self.imManager = IMMananger(channel: channel)
|
self.imManager = IMMananger(channel: channel)
|
||||||
@@ -18,10 +16,8 @@ public class SwiftFlutterOpenimSdkPlugin: NSObject, FlutterPlugin {
|
|||||||
self.friendshipManager = FriendshipManager(channel: channel)
|
self.friendshipManager = FriendshipManager(channel: channel)
|
||||||
self.messageManager = MessageManager(channel: channel)
|
self.messageManager = MessageManager(channel: channel)
|
||||||
self.groupManager = GroupManager(channel: channel)
|
self.groupManager = GroupManager(channel: channel)
|
||||||
|
self.channelManager = ChannelManager(channel: channel)
|
||||||
self.userManger = UserManager(channel: channel)
|
self.userManger = UserManager(channel: channel)
|
||||||
// self.signalingManager = SignalingManager(channel: channel)
|
|
||||||
// self.workMomentsManager = WorkMomentsManager(channel: channel)
|
|
||||||
// self.organizationManager = OrganizationManager(channel: channel)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static func register(with registrar: FlutterPluginRegistrar) {
|
public static func register(with registrar: FlutterPluginRegistrar) {
|
||||||
@@ -43,14 +39,10 @@ public class SwiftFlutterOpenimSdkPlugin: NSObject, FlutterPlugin {
|
|||||||
friendshipManager.handleMethod(call: call, result: result)
|
friendshipManager.handleMethod(call: call, result: result)
|
||||||
case "groupManager":
|
case "groupManager":
|
||||||
groupManager.handleMethod(call: call, result: result)
|
groupManager.handleMethod(call: call, result: result)
|
||||||
|
case "channelManager":
|
||||||
|
channelManager.handleMethod(call: call, result: result)
|
||||||
case "userManager":
|
case "userManager":
|
||||||
userManger.handleMethod(call: call, result: result)
|
userManger.handleMethod(call: call, result: result)
|
||||||
// case "signalingManager":
|
|
||||||
// signalingManager.handleMethod(call: call, result: result)
|
|
||||||
// case "workMomentsManager":
|
|
||||||
// workMomentsManager.handleMethod(call: call, result: result)
|
|
||||||
// case "organizationManager":
|
|
||||||
// organizationManager.handleMethod(call: call, result: result)
|
|
||||||
default:
|
default:
|
||||||
print("Handle ManagerName Error: \(managerName) not found")
|
print("Handle ManagerName Error: \(managerName) not found")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,9 +17,16 @@ A new Flutter project.
|
|||||||
s.dependency 'Flutter'
|
s.dependency 'Flutter'
|
||||||
s.platform = :ios, '11.0'
|
s.platform = :ios, '11.0'
|
||||||
|
|
||||||
s.dependency 'OpenIMSDKCore','3.2.1'
|
#s.ios.vendored_frameworks = 'frameworks/*.xcframework'
|
||||||
|
#s.vendored_frameworks = 'frameworks/*.xcframework'
|
||||||
|
s.dependency 'openim_sdk_core_ios','0.2.0'
|
||||||
s.static_framework = true
|
s.static_framework = true
|
||||||
# s.vendored_frameworks = 'Framework/*.framework'
|
s.library = 'resolv'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# s.vendored_frameworks = 'Framework/*.xcframework'
|
||||||
# Flutter.framework does not contain a i386 slice.
|
# Flutter.framework does not contain a i386 slice.
|
||||||
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386 arm64' }
|
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386 arm64' }
|
||||||
s.swift_version = '5.0'
|
s.swift_version = '5.0'
|
||||||
|
|||||||