diff --git a/CHANGELOG.md b/CHANGELOG.md index b45cbaa..50388fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,175 +1,13 @@ -Changelog -========= -# v3.0.33 (Jul 18, 2024) -* Updated request header - -# v3.0.32 (Apr 9, 2024) -* Added SendbirdChatPrivacyInfo.xcprivacy for Apple Privacy Manifest - -# v3.0.31 (Mar. 25, 2024) -* Fixed Websocket not supporting TLS 1.2 - -# v3.0.30 (Jun. 7, 2023) -* Support Websocket TLS 1.2 - -# v3.0.29 (Oct. 12, 2021) -* Fixed SetFile() Bug - -# v3.0.28 (July 16, 2021) -* Add Public Interface For Emoji -* - GetEmoji -* - GetAllEmoji -* - GetEmojiCategory -* Bug Fix - -# v3.0.27 (Jun 14, 2021) -* Added operator list query - -# v3.0.26 (May 25, 2021) -* Added operator related methods - -# v3.0.25 (May 14, 2021) -* Monior bug fix - -# v3.0.24 (May 7, 2021) -* Added public group channel name search - -# v3.0.23 (Apr 20, 2021) -* Added missing method for UserMessageParams -* Stability improvement - -# v3.0.22 (Mar 31, 2021) -* Added ApplicationUserListQuery -* Statbility improvement - -# v3.0.21 (Mar 10, 2021) -* Bug fix - -# v3.0.20 (Mar 9, 2021) -* Bug fix - -# v3.0.19 (Jan 9, 2021) -* Fixed FileMessage.GetSender() thrown an exception in some cases -* UserMessage.Sender property is deprecated. Use UserMessage.GetSender() instead - -# v3.0.18 (Oct 22, 2020) -* File encryption support - -# v3.0.17 (Jun 19, 2020) -* Chat history reset feature added -* User mention feature added -* User event handler added -* Performance improved - -# v3.0.16 (Jun 1, 2020) -* Retrieval of banned/unmuted user list added -* Channel hide/archive feature added -* User/message reporting feature added - -# v3.0.15 (May 15, 2020) -* Introduced group channel invitation feature -* Introduced message update feature -* Added channel creation custom URL option - -# v3.0.14 (NOV 30, 2019) -* Added `BanUser`, `UnbanUser` in GroupChannel -* Added creating and updating GroupChannel with operators - -# v3.0.13 (JUL 25, 2019) -* Improved ConnectionHandler. - -# v3.0.12 (JUL 28, 2018) -* Improved SendBird server connection. - -# v3.0.11 (JUN 18, 2018) -* Added CustomTypesFilter in GroupChannelListQuery to search channels based on CustomType. - -# v3.0.10 (May 23, 2018) -* Updated WebSocket lib version - -# v3.0.9 (Jan 26, 2018) -* Fixed signing assembly issue on Windows build - -# v3.0.8 (Jan 24, 2018) -* Reconnect() method added for explicit reconnection -* Application ID re-initialization added - -# v3.0.7 (Jan 18, 2018) -* Improved stability - -# v3.0.6 (Apr 17, 2017) -* Fixed message deletion issue on Unity 3d - -# v3.0.5 (Jan 20, 2017) -* Speed up initial loading on some platforms - -# v3.0.4 (Jan 17, 2017) -* Improved stability -* Fixed read receipt reset issue - -# v3.0.3 (DEC 14, 2016) -* Improved stability - -# v3.0.2 (Dec 9, 2016) -* Improved performance -* Improved stability -* Added user IDs filters and query type to GroupChannelListQuery -* Added channel custom type for OpenChannel and GroupChannel -* Fixed to call ChannelHandler.onChannelChanged when unread message count or last message has been updated -* Fixed to update last message of group channel when UserMessage or FileMessage is successfully sent -* Added custom type to messages -* Added group channel list search by member nicknames and user IDs -* Added creating and updating channel cover image with binary file - -# v3.0.1 (Nov 21, 2016) -* Faster connection time -* Improved stability - -# v3.0.0 (Nov 7, 2016) -* `SendBird .NET SDK v3` - -# v2.3.0 (Jul 27, 2016) -* Performance Improvement -* Unity SDK is separated -* Now you can set `SendBirdSDK.CommonVar.IS_LOGGING` (`true`, `false`) you can see logs from SendBird SDK - -# v2.2.0 (Jun 14, 2016) -* SDK Internal timer logic is changed -* Performance Improvement -* Fixed a bug `NullReferenceException` in `SendBirdSDK.SendMessage` - -# v2.1.2 (Jun 10, 2016) -* SendBirdSDK.GetConnectionState() is added - -# v2.1.1 (May 24, 2016) -* Performance improvement - -# v2.0.0 (May 17, 2016) -* Added routing for getting server address -* `websocket-sharp.dll` file is changed, please update your existing dll -* Fixed asynchronous API request bugs - -# v1.2.1 (Apr 12, 2016) -* Updated Internal Settings - -# v1.2.0 (Apr 7, 2016) -* Updated All Internal API request(asynchronous) - -# v1.1.1 (Mar 21, 2016) -* Fixed a bug that `SendBird.Login` fails to login again with different User ID -* Fixed `SendBird.Model.SystemEvent` data field parsing error - -# v1.1.0 (Mar 17, 2016) -* Added `MemberCountQuery` which returns total member count and online member count -* Updated `MemberListQuery`. You can select to return all members list or online members list using onlineOnly -* Added `ChannelMetaDataQuery` -* Added `ChannelMetaCounterQuery` -* Added `isOnline`, `lastSeenAt` to `User` Model -* Added `isSoftMuted` to `Message`, `FileLink` -* Added `isMuted` to `User`, `Member`, `Sender` -* Added `SystemEvent` and `OnSystemEventReceived` to `SendBirdEventHandler` for system events such as `join` or `leave` to/from `channels` -* Added `OnMutedMessageReceived/OnMutedFileReceived` to `SendBirdEventHandler` for soft muted user's messages and files -* Deleted `SendBirdNotificationHandler`, all events are moved to `SendBirdEventHandler` - -# v1.0.0 -* `SendBird .NET SDK` Release +# Change Log + +## 4.0.0 (Sep 3, 2024) +### Features +- Added group channel collection +- Added message collection +- Added message threading +- Added support for using a session token +- Added support for message reactions +- Added support for message resending +- Added support for pinned messages +- Added support for extra data in a message +- Support for NuGet \ No newline at end of file diff --git a/LICENSE b/LICENSE.md similarity index 79% rename from LICENSE rename to LICENSE.md index 5c80119..225b32e 100644 --- a/LICENSE +++ b/LICENSE.md @@ -33,36 +33,3 @@ If You comply with this agreement, You have the rights below. a. anything related to the SDK, services, or content (including code) on third party Internet sites, or third party programs; and b. claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. - - - -BSD License - -For SocketRocket software - -Copyright (c) 2016-present, Facebook, Inc. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md index dcbe69e..67f89f7 100644 --- a/README.md +++ b/README.md @@ -1,171 +1,160 @@ + # [Sendbird](https://sendbird.com) Chat SDK for .NET -[![Platform](https://img.shields.io/badge/platform-.NET%2FMono%2FXamarin-orange.svg)](#) +[![Platform](https://img.shields.io/badge/platform-.NET-orange.svg)](#) [![Languages](https://img.shields.io/badge/language-C%23-orange.svg)](#) [![Commercial License](https://img.shields.io/badge/license-Commercial-brightgreen.svg)](https://github.com/sendbird/SendBird-SDK-dotNET/blob/master/LICENSE.md) ## Table of contents - 1. [Introduction](#introduction) - 1. [Before getting started](#before-getting-started) - 1. [Getting started](#getting-started) - 1. [Send your first message](#send-your-first-message) - 1. [Support Apple Privacy manifest](#support-apple-privacy-manifest) +1. [Introduction](#introduction) +2. [Getting started](#getting-started) +3. [Sending your first message](#sending-your-first-message) -
## Introduction -Through Chat SDK for .NET, you can efficiently integrate real-time chat into your client app. On the client-side implementation, you can initialize, configure and build the chat with minimal effort. On the server-side, Sendbird ensures reliable infra-management services for your chat within the app. This read.me provides the Chat SDK’s structure, supplementary features, and the installation steps. -> Note: If you want to Chat SDK for Unity, You can find it at https://github.com/sendbird/sendbird-chat-sdk-unity -### For further reference - -Find out more about Sendbird Chat for .NET on [Chat SDK for .NET doc](https://sendbird.com/docs/chat/v3/dotnet/getting-started/chat-sdk-setup). If you have any comments or questions regarding bugs and feature requests, visit [Sendbird community](https://community.sendbird.com). - +The Sendbird Chat SDK for .NET allows you to add real-time chat into your client app with minimal effort. Sendbird offers a feature rich, scalable, and proven chat solution depended on by companies like Reddit, Hinge, PubG and Paytm.
-## Before getting started +### How it works -### Requirements +The Chat SDK provides the full functionality to provide a rich chat experience, implementing it begins by adding a user login, listing the available channels, selecting or creating an open channel or group channel, and receive messages and other events through channel event delegates and the ability to send a message. Once this basic functionality is in place, congratulations, you now have a chat app! -The minimum requirements for Chat SDK for .NET are: +Once this is in place, take a look at [all the other features](https://sendbird.com/features/chat-messaging/features) that Sendbird supports and add what works best for your users. +
-- Our Chat SDK is designed and tested on `Mono/.NET 2.0` platform and `Xamarin Studio 6.1.1`. You can also use our SDK on any platforms which are compatible with `Mono/.NET 2.0`. -### WebSocket library +## Getting started -The Chat SDK for .NET uses `websocket-sharp` for websocket connections. You must include `websocket-sharp.dll` as well as `SendBird.dll` and update them together. +### Step 1: Create a Sendbird application from your dashboard -
+Before installing Sendbird Chat SDK, you need to create a Sendbird application on the [Sendbird Dashboard](https://dashboard.sendbird.com). You will need the `App ID` of your Sendbird application when initializing the Chat SDK. -## Getting started +> **Note**: Each Sendbird application can be integrated with a single client app. Within the same application, users can communicate with each other across all platforms, whether they are on mobile devices or on the web. -### Step 1: Create a Sendbird application from your dashboard +
-A Sendbird application comprises everything required in a chat service including users, messages, and channels. A Sendbird application can either be created through the dashboard. To create an application: +### Step 2: Install the Chat SDK -1. Go to the [Sendbird Dashboard]() and enter your email and password, and create a new account. You can also sign up with a **Google** account. -2. When prompted by the setup wizard, enter your organization information to manage Sendbird applications. -3. When your dashboard home appears, click **Create +** at the top-right corner. +To install the Sendbird Chat SDK for .NET, you need to add the `Sendbird.Chat` package from NuGet. Follow the steps below: -Regardless of the platform, only one Sendbird application can be integrated per app; however, the application supports communication across allSendbird’s provided platforms without any additional setup. Sendbird currently supports iOS, Android, web, .NET apps. +1. Open your project in Visual Studio. +2. Go to **Tools** > **NuGet Package Manager** > **Package Manager Console**. +3. Search for `Sendbird.Chat` in the **Browse** tab. +4. Select the package and click **Install**. -> Note: All the data is limited to the scope of a single application, thus the users in different Sendbird applications are unable to chat with each other. +Alternatively, you can install the package using the NuGet Package Manager Console with the following command: -### Step 2: Download the latest Chat SDK +```bash +dotnet add package Sendbird.Chat +``` -- https://github.com/sendbird/sendbird-chat-sdk-dotnet +Once the package is installed, you can start integrating Sendbird Chat into your application.
-## Send your first message +## Sending your first message + +Now that the Chat SDK has been imported, we're ready to start sending a message. ### Authentication -To use the features of the Chat SDK in your client app, a `SendBirdClient` instance must be initiated in each client app before user authentication with Sendbird server. These instances communicate and interact with the server based on an authenticated user account, allowing for the client app to use the Chat SDK features. +In order to use the features of the Chat SDK, a `SendbirdChat` instance must be initiated through user authentication with Sendbird server. This instance communicates and interacts with the server based on an authenticated user account, and then the user’s client app can use the Chat SDK's features. -### Step 1: Initialize the Chat SDK +Here are the steps to sending your first message using Chat SDK: -You need to initialize a Sendbird instance before authentication. Initialization binds the Chat SDK to Android’s context which allows Chat SDK to respond to connection and state changes and also enables client apps to use Chat SDK features. +
-To initialize a Sendbird instance, pass the `App_ID` of your Sendbird application in the dashboard to the `SendBirdClient.Init()`. As the `SendBirdClient.Init()` can only be a single instance, call it only a single time across your client app. Typically, initialization is implemented in the user login screen. +### Step 3: Using the Sendbird.Chat namespace +Once the SDK have been installed, create a new source code file and add the following code at the top to start using Sendbird Chat SDK. ```csharp -SendBirdClient.Init(APP_ID); +using Sendbird.Chat; ``` -### Step 2: Connect to Sendbird server - -Apart from initialization or use of the `Init()` method, your client app must always be connected to Sendbird server before calling any methods. If you attempt to call a method without connecting, a [`ERR_CONNECTION_REQUIRED (800101)`](https://sendbird.com/docs/chat/v3/dotnet/guides/error-codes) error would return. +### Step 4: Initialize the Chat SDK -Connect a user to Sendbird server using a unique user ID or in combination with an access token. Sendbird prefers the latter method, as it ensures privacy with the user, but the former method is useful during the developmental phase or if your service doesn't require additional security. +Now, initialize the Chat SDK in the app to allow the Chat SDK to respond to changes in the connection status in Android client apps. -#### A. User ID +To initialize the `SendbirdChat` instance, pass the `APP_ID` of your Sendbird application in the [Sendbird Dashboard](https://dashboard.sendbird.com) as an argument to a parameter in the `SendbirdChat.Init()` method. -Connect a user to Sendbird server using their unique **user ID**. By default, Sendbird server can authenticate a user by a unique user ID. Upon request for a connection, the server queries the database to check for a match. Any untaken user ID is automatically registered as a new user to the Sendbird system, while an existing ID is allowed to log indirectly. The ID must be unique within a Sendbird application, such as a hashed email address or phone number in your service. ```csharp -SendBirdClient.Connect(USER_ID, (User user, SendBirdException e) => -{ - if(e != null) // Error - { - return; - } -}); +SendbirdChat.Init(new SbInitParams(APP_ID)); ``` -#### B. A combination of user ID and access token ID +### Step 5: Connect to Sendbird server + +After initialization by use of the `Init()` method, your client app must always be connected to Sendbird server before calling any methods. If you attempt to call a method without connecting, an `ConnectionRequired(800101)` error would return. + +Connect a user to Sendbird server either through a unique user ID or in combination with an access token. Sendbird prefers the latter method, as it ensures privacy with the user. The former is useful during the developmental phase or if your service doesn't require additional security. -Sendbird prefers that you pass the APP ID through the use of a token, as it ensures privacy for the users. Create a user along with their access token, or issue an access token for an existing user. Once an access token is issued, a user is required to provide the access token in the `SendBirdClient.connect()` method which is used for logging in. +#### A. Using a unique user ID -1. Using the [Chat Platform API](https://sendbird.com/docs/chat/v3/platform-api/guides/user#2-create-a-user), create a Sendbird user account with the information submitted when a user signs up your service. -2. Save the user ID along with the issued access token to your persistent storage which is securely managed. -3. When the user attempts to log in to the Sendbird application, load the user ID and access token from the storage, and then pass them to the `SendBirdClient.connect()` method. -4. Periodically replacing the user's access token is recommended to protect the account. +Connect a user to Sendbird server using their unique **user ID**. By default, Sendbird server can authenticate a user by a unique user ID. Upon request for a connection, the server queries the database to check for a match. Any untaken user ID is automatically registered as a new user to the Sendbird system, while an existing ID is allowed to log indirectly. The ID must be unique within a Sendbird application, such as a hashed email address or phone number in your service. + +This allows you to get up and running without having to go deep into the details of the token registration process, however make sure to enable enforcing tokens before launching as it is a security risk to launch without. ```csharp -SendBirdClient.Connect(USER_ID, ACCESS_TOKEN, (User user, SendBirdException e) => -{ - if(e != null) // Error - { - return; - } -}); +SendbirdChat.Connect(USER_ID, (inUser, inError) => { }); ``` -#### - Tips for user account security +#### B. Using a combination of unique user ID and token + +Sendbird prefers that you pass the APP ID through the use of a token, as it ensures privacy and security for the users. [Create a user](https://sendbird.com/docs/chat/v3/platform-api/guides/user#2-create-a-user) along with their access token, or [issue an session token](https://sendbird.com/docs/chat/v3/platform-api/user/managing-session-tokens/issue-a-session-token) to pass during connection. A comparison between an access token and session token can be found [here](https://sendbird.com/docs/chat/v3/platform-api/user/managing-session-tokens/issue-a-session-token). Once a token is issued, a user is required to provide the issued token in the `SendbirdChat.connect()` method which is used for logging in. -From **Settings** > **Application** > **Security** > **Access token permission** setting in your dashboard, you can prevent users without an access token from logging in to your Sendbird application or restrict their access to read and write messages. +1. Using the Chat Platform API, create a Sendbird user account with the information submitted when a user signs up your service. +2. Save the user ID along with the issued token to your persistent storage which is securely managed. +3. When the user attempts to log in to the Sendbird application, load the user ID and token from the storage, and then pass them to the `SendbirdChat.Connect()` method. +4. Periodically replacing the user's token is recommended to protect the account. -For security reasons, you can also use a session token when a user logs in to Sendbird server instead of an access token. Go to the [Access token vs. Session token](https://sendbird.com/docs/chat/v3/platform-api/guides/user#2-create-a-user-3-access-token-vs-session-token) section from the [Chat Platform API](https://sendbird.com/docs/chat/v3/platform-api/getting-started/prepare-to-use-api) to learn more. +```csharp +SendbirdChat.Connect(USER_ID, AUTH_TOKEN, (inUser, inError) => { }); +``` -### Step 3: Create a new open channel +
-Create an [open channel](https://sendbird.com/docs/chat/v3/dotnet/guides/open-channel#2-create-a-channel). Once created, all users in your Sendbird application can easily participate in the channel. You also can create a [group channel](https://sendbird.com/docs/chat/v3/dotnet/guides/group-channel#2-create-a-channel) by [inviting users](https://sendbird.com/docs/chat/v3/dotnet/guides/group-channel#2-invite-users-as-members) as new members to the channel. +### Step 6: Create a new open channel + +Create an open channel using the following codes. Open channels are where all users in your Sendbird application can easily participate without an invitation. ```csharp -OpenChannel.CreateChannel(NAME, COVER_IMAGE_OR_URL, DATA, CUSTOM_TYPE, (OpenChannel openChannel, SendBirdException e) => { - if(e != null) // Error. - { - return; - } -}); +SendbirdChat.OpenChannel.CreateChannel(new SbOpenChannelCreateParams(), (inChannel, inError) => { }); ``` -### Step 4: Enter the channel +### Step 7: Enter the channel -Enter the channel to send and receive messages. +Enter the open channel to send and receive messages. ```csharp -OpenChannel.GetChannel(CHANNEL_URL, (OpenChannel openChannel, SendBirdException e) => { - if (e != null) // Error. - { - return; - } - - openChannel.Enter((SendBirdException e) => { - if (e != null) // Error. - { - return; - } +SbOpenChannel openChannel = null; +SendbirdChat.OpenChannel.GetChannel(CHANNEL_URL, (inChannel, inCache, inGetChannelError) => +{ + if (inGetChannelError != null) + return; //Error + + openChannel = inChannel; + openChannel.Enter((inEnterChannelError) => + { + if (inEnterChannelError != null) + return; //Error }); }); ``` -### Step 5: Send a message to the channel +
+ +### Step 8: Send a message to the channel -Finally, send a message to the channel. There are [three types](https://sendbird.com/docs/chat/v3/platform-api/guides/messages#-3-resource-representation): a user message, which is a plain text, a file message, which is a binary file, such as an image or PDF, and an admin message, which is a plain text sent through the [dashboard](https://dashboard.sendbird.com/auth/signin) or [Chat Platform API](https://sendbird.com/docs/chat/v3/platform-api/guides/messages#2-send-a-message). +Finally, send a message to the channel. There are [three types](https://sendbird.com/docs/chat/v3/platform-api/guides/messages#-3-resource-representation): a user message, which is a plain text, a file message, which is a binary file, such as an image or PDF, and an admin message, which is a plain text also sent through the [dashboard](https://dashboard.sendbird.com/auth/signin) or [Chat Platform API](https://sendbird.com/docs/chat/v3/platform-api/guides/messages#2-send-a-message). ```csharp -openChannel.SendUserMessage(MESSAGE, DATA, (UserMessage userMessage, SendBirdException e) => { - if (e != null) // Error. - { - return; - } +openChannel.SendUserMessage(MESSAGE, (inMessage, inError) => +{ + if (inError != null) + return; //Error }); ``` - -## Support Apple Privacy manifest - -Add the contents of the SendbirdChatPrivacyInfo.xcprivacy file to the project's PrivacyInfo.xcprivacy. +
diff --git a/SendBird.dll b/SendBird.dll deleted file mode 100644 index f9e7952..0000000 Binary files a/SendBird.dll and /dev/null differ diff --git a/catalog-info.yaml b/catalog-info.yaml index d322300..e4dcd19 100755 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -2,7 +2,7 @@ apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: sendbird-chat-sdk-dotnet - description: Chat SDK v3 for .NET + description: Chat SDK v4 for .NET annotations: github.com/project-slug: sendbird/sendbird-chat-sdk-dotnet spec: diff --git a/netstandard2.0/SendbirdChat.deps.json b/netstandard2.0/SendbirdChat.deps.json new file mode 100644 index 0000000..5c7dab8 --- /dev/null +++ b/netstandard2.0/SendbirdChat.deps.json @@ -0,0 +1,63 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.0/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.0": {}, + ".NETStandard,Version=v2.0/": { + "SendbirdChat/4.0.0": { + "dependencies": { + "NETStandard.Library": "2.0.3", + "Newtonsoft.Json": "13.0.3" + }, + "runtime": { + "SendbirdChat.dll": {} + } + }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "NETStandard.Library/2.0.3": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + }, + "Newtonsoft.Json/13.0.3": { + "runtime": { + "lib/netstandard2.0/Newtonsoft.Json.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.3.27908" + } + } + } + } + }, + "libraries": { + "SendbirdChat/4.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "path": "netstandard.library/2.0.3", + "hashPath": "netstandard.library.2.0.3.nupkg.sha512" + }, + "Newtonsoft.Json/13.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==", + "path": "newtonsoft.json/13.0.3", + "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/netstandard2.0/SendbirdChat.dll b/netstandard2.0/SendbirdChat.dll new file mode 100644 index 0000000..74e453b Binary files /dev/null and b/netstandard2.0/SendbirdChat.dll differ diff --git a/netstandard2.0/SendbirdChat.pdb b/netstandard2.0/SendbirdChat.pdb new file mode 100644 index 0000000..574dadc Binary files /dev/null and b/netstandard2.0/SendbirdChat.pdb differ diff --git a/websocket-sharp.dll b/websocket-sharp.dll deleted file mode 100644 index c3aec74..0000000 Binary files a/websocket-sharp.dll and /dev/null differ