Photon Chat C# Client - Changelog
Exit Games GmbH - www.photonengine.com - forum.photonengine.com


Version 4.1.6.11 (22. November 2021)
    Added: CustomAuthenticationType.Epic to authenticate via Epic Online Services (EOS).
    Added: CustomAuthenticationType.FacebookGaming to authenticate via Facebook Gaming services.

Version 4.1.6.10 (21. October 2021 - rev6243)
    Fixed: The ChatPeer.ConfigUnitySockets(), which used a surplus typeof() for Xbox configuration.

Version 4.1.6.6 (21. September 2021 - rev6204)
    Changed: For Xbox, order of checked assemblies when getting Type SocketNativeSource. It's more likely to be in Assembly-CSharp.

Version 4.1.6.5 (24. August 2021 - rev6181)
    Updated: The default name server host to "ns.photonengine.io". When using WSS on this, it expects TLS1.2 (Win 7 and old Unity versions may not support this).

Version 4.1.6.2 (17. June 2021)
    Changed: The enumeration CustomAuthenticationType was changed to fix naming inconsistencies. Use PlayStation4 and PlayStation5 respectively. Old variants are available as obsolete.

Version 4.1.5.2 (12. March 2021)
    ADDED: CustomAuthenticationType.Playstation5 (value 12).

Version 4.1.5.0 (03. March 2021)
    Updated: ChatPeer ConfigUnitySockets() to the analog of the Realtime API.

Version 4.1.5.0 (3. February 2021)
    Internal: AuthenticationValues.Token is now an object instead of a string (so some internal code changed). This enables the server to send a byte[], which is more effective than a string.

Version 4.1.4.6 (16. November 2020)
    Added: ChatClient.PrivateChatHistoryLength field. If set before you connect, this can be used to limit the number of private messages when the server (re)subscribes the client to (still alive) a private chat channel.
    Added: Protocol Fallback option for Chat. Analog to the Realtime API, Chat can now try another protocol, if the initial connect to the Name Server fails. After the timeout or when an error happened, UDP will fallback to TCP. TCP will fallback to UDP.
    Added: EnableProtocolFallback in ChatClient and ChatAppSettings. When using ConnectUsingSettings, the ChatClient's value gets set and used.
    Changed: Connect(appid, appversion, authValues) will only apply the authvalues parameter, if that's non-null.
    Changed: ChatAppSettings field AppId is now AppIdChat (matching the value in Realtime API AppSettings). The old name is currently just obsolete.
    Added: ChatAppSettings.Port to override the Name Server Port if needed. Note: Chat does not support "Alternative Ports" yet (ports pre-defined per server).
    Added: ChatPeer.NameServerPortOverride value to replace/override the default per-protocol port value (by the one in the AppSettings, e.g.).

Version 4.1.4.5 (02. September 2020)
    Added: Option for extended features: Channels may send a user list, channels and users can have custom properties and there are web-forwarding flags. Needs compile define CHAT_EXTENDED. This also adds new methods to the IChatClientListener.
    Changed: AuthenticationValues has been refined, analog to the changes in the Realtime API.

Version 4.1.4.2 (8. May 2020 - rev5519)
    Added: Broadcast receive and read channel using UniqueRoomID UniqueRoomID read from SubscribeChannel response

Version 4.1.2.20
    Changed: ChatDisconnectCause enum and OnDisconnected callback usage updated to be in sync. with Realtime.
    Added: ChatClient.ConnectUsingSettings(ChatAppSettings appSettings).
    Added: more error logs when something fails internally.

Version 4.1.2.19 (12. November 2019 - rev5266)
    Changed: ChatPeer now look for SocketNativeSource instead of SocketWebTcpNativeDynamic when the target platform is XB One. A new Xbox addon is coming up on our SDK page.

Version 4.1.2.16 (25. June 2019 - rev5168)
    Added: ChatClient.TryGetPrivateChannelByUser.

Version 4.1.2.14 (6. May 2019 - rev5097)
    Changed: Chat API changes are now listed in a separate changes file.

Version 4.1.2.13 (3. May 2019 - rev5086)
    Fixed: Properly add local client's UserId to public channels' Subscribers list when applicable.

Version 4.1.2.11 (15. April 2019 - rev5043)
    Added: Feature: PublishSubscribers. Per channel, you can now define if the server broadcasts users joining and leaving.
    Fixed: proper way to handle Subscribe event when channel properties are returned.
    Added: Viveport Auth Provider enum value.
    Added: Switch-related workaround. Setting a Thread.Name was causing a crash in some exports on console. This affects Unity to Nintendo Switch exports.
    Added: ChannelCreationOptions class to be used in the new Subscribe overload method.
    Changed: Chat to use the same 1.8 serialization as Realtime/PUN. This also now matches the SocketWebTcp.SerializationProtocol default.

Version 4.1.2.9 (13. February 2019 - rev4985)
    Added: Client API for Max Subscribers and Publish Subscribers features inside public channels.

Version 4.1.2.1 (31. July 2018 - rev4787)
    Changed: Namespace from "ExitGames.Client.Photon.Chat" to "Photon.Chat".
    Added: ConnectAndSetStatus method.

Version 4.1.1.17 (11. October 2017 - rev4465)
    Fixed: Unity "6" compile define is now UNITY_2017.

Version 4.1.1.15 (17. July 2017 - rev4232)
    Added: ChatClient.TransportProtocol as shortcut to the use PhotonPeer's TransportProtocol value. This enables setting the protocol easily while not connected.
    Added: ChatClient.SocketImplementationConfig as shortcut to modify PhotonPeer's SocketImplementationConfig. This enables you to setup which IPhotonSocket implementation to use for which network protocol.
    Changed: ChatPeer.ConfigUnitySockets() to try to find our websocket implementations in the assembly, making the SocketWebTcpCoroutine and SocketWebTcpThread classes optional.
    Removed: Class "SocketWebTcp" is no longer found by ConfigUnitySockets().

Version 4.1.1.14 (5. July 2017 - rev4191)
    Added: ChatClient can optionally run a thread to call SendOutgoingCommands in intervals. This makes sure the connection doesn't fail easily (e.g. when Unity is loading scenes, etc.). You still have to call Service to dispatch received messages.
    Added: ChatClient.UseBackgroundWorkerForSending. Set this to true, to use the new background thread. Note: Do not use this in WebGL exports from Unity cause Threads are unavailable in them.

Version 4.1.1.2 (13. September 2016 - rev3652)
    Changed: GetNameServerAddress() is the same in Chat and LoadBalancing APIs now.
    Changed: ChatPeer now has ConfigUnitySockets(), which defines the SocketImplementationConfig. It's only used in Unity (using UNITY define).
    Changed: ChatClient is not setting socket implementations anymore.
    Added: Hashtable definition to use Photon's own implementation for Windows Store builds (NETFX_CORE). This must be used but it means you to use the same Hashtable definition in all builds (no matter if 8.1 or 10).
    Added: Support for WebGL export in Unity.

Version 4.0.5.0 (3. December 2015 - rev3144)
    Added: A MessageLimit field for ChatClient and ChatChannel to limit the number of messages the client keeps locally. It might be useful to limit memory usage in long running chats. Set ChatClient.MessageLimit to apply the limit to any channel subscribed afterwards or apply a limit individually.

Version 4.0.0.11 (28. October 2015 - rev3093)
    Added: More sanity checks on operations (empty userId or secret, max friends).
    Added: Special debug logging when the server returns an error for "Operation Unknown". In this case, it's highly likely that you don't use a Chat AppId.
    Added: More helpful error logging.

Version 4.0.0.10 (14. July 2015 - rev2988)
    Added: A Unity 4.6 demo with uGUI. It's missing a few features but should give you a good start to making your own.
    Added: Unity/WebGL support (merged from PUN).
    Added: Breaking! IChatClientListener.DebugReturn(). Photon lib and chat client log via this method (no logging to console by default).
    Changed: ChatClient.CustomAuthenticationValues is now .AuthValues. You can use those values to identify a user, even if you don't setup an external, custom authentication service.
    Changed: ChatClient.UserId no longer directly stores the id but puts it into AuthValues. This means, the UserId could also be set via setting AuthValues.
    Changed: The API of AuthenticationValues. There is now the UserId and AddAuthParameter() replaces the less general SetAuthParameters() (which only set specific key/values).
    Note: All users should have a UserId. You can set chatClient.UserId before you connect, or you can set the AuthenticationValues in Connect(..., authValues) to set a UserId.
    Added: ChatChannel.ToStringMessages(), which gets all messages in a single string, line by line. The format is "Sender:Message".
    Added: ChatClient.TryGetChannel() to find a channel only by name, no matter if public or private.

Version 4.0.0.7 (12. January 2015 - rev2763)
    Internal: Changed code for UserID from 7 to 225. The latter is used in LoadBalancing, too, so we want to re-use the code here.

Version 4.0.0.1 (17. June 2014 - rev2663)
    Changed: How the server responds to Subscribe and Unsubscribe. Events will now contain success/failure of those. This allows us to send the answer after calling a WebHook if needed and we can even send it to multiple clients (which authenticated with the same userID).
    Changed: Handling of subscription responsed. This is done to allow web services to subscribe a client remotely and to be able to prevent joining some channel that a user should not join (the channel of some guild or another team, e.g.).
    Changed: Debug logging. In Unity we can't use Debug.Assert, etc. So we have to log more cleanly. This works in Editor and several platforms (but not all).
    Changed: Folder for Chat API. It now begins with "Photon" which provides some context no matter where you copy the files. Easier to find in Unity projects.
    Changed: Operation FriendList and method SendFriendList renamed to AddFriends
    Added: Operation RemoveFriends and corresponding method in ChatClient.cs
    Added: Console Demo has new command 'fr' to remove friends

Version 4.0.0.0 (23. May 2014 - rev2614)
    Added: SendPrivateMessage() overload that has option to encrypt private messages. Public messages don't need encryption.
    Removed: lastId and LastMessageIndex from channels. Those were impractical and should be removed from the API.
    Changed: UserStatus class to ChatUserStatus.
    Changed: Most classes are defined in their own file now.
    Removed: Folders "Shared" and their subfolders. This gives a much better overview.
    Added: Handling for event SubscribeResponse. This is not actually a response but gives you info about channels that got subscribed (e.g. when you re-login quickly or when a user is logged in in multiple clients).
    Added: HandleSubscriptionResults() method to handle the event and proper responses.
