|
| 1 | +--- |
| 2 | +title: "Discord Social SDK Release 1.4" |
| 3 | +date: "2025-06-26" |
| 4 | +topics: |
| 5 | + - "Discord Social SDK" |
| 6 | +--- |
| 7 | + |
| 8 | +A new release of the Discord Social SDK is now available, with the following updates: |
| 9 | + |
| 10 | +### Lobby Chat History |
| 11 | + |
| 12 | +- Added [`Client::GetLobbyMessagesWithLimit`] to retrieve lobby message histories based on a provided lobby ID, with a |
| 13 | + maximum of 200 messages and up to 72 hours. |
| 14 | +- Only messages from lobbies the user is currently a member of can be retrieved. |
| 15 | +- DM history will be coming soon too! |
| 16 | + |
| 17 | +### Unified Friends List |
| 18 | + |
| 19 | +- Added [`Client::GetRelationshipsByGroup`] which both logically groups a user’s relationships for the purpose of |
| 20 | + rendering a friends list and sorts users based on |
| 21 | + our [Unified Friends List design guidelines](/docs/discord-social-sdk/design-guidelines/unified-friends-list). |
| 22 | + Before, it was necessary to call [`Client::GetRelationships`] and manually partition each relationship into the |
| 23 | + appropriate friend group, as well as write your own sorting operations. |
| 24 | +- Added [`Client::SetRelationshipGroupsUpdatedCallback`] which fires whenever a user change occurs which could invalidate |
| 25 | + a previously sorted friends list retrieved from [`Client::GetRelationshipsByGroup`]. Call |
| 26 | + [`Client::GetRelationshipsByGroup`] again to maintain an up-to-date friends list. |
| 27 | +- Added `IsSpamRequest` to [`RelationshipHandle`], returns `true` if Discord believes the request to be spam. |
| 28 | + |
| 29 | +### Audio Changes |
| 30 | + |
| 31 | +- A new experimental audio mode has been added for mobile devices which uses standard media audio streams instead of |
| 32 | + voice-specific processing. On iOS this causes the voice engine to use the Remote I/O Audio Unit instead of Voice |
| 33 | + Processing I/O and likewise on Android, media stream types are used instead of voice communication types. This mode |
| 34 | + may be enabled by creating a Client with a [`ClientCreateOptions`] parameter whose `experimentalAudioSystem` |
| 35 | + property is |
| 36 | + set to `AudioSystem::Game`. In this case, you should also set [`Client::SetEngineManagedAudioSession`] to true. **We do |
| 37 | + not recommend using this for production** - however, if you are interested in trying it out, we are looking for |
| 38 | + feedback! |
| 39 | +- Added [`Client::SetAecDump`] to enable recording of audio diagnostic information. |
| 40 | + |
| 41 | +### Auth |
| 42 | + |
| 43 | +- Publisher Auth |
| 44 | + - Publisher Auth is a new feature which makes authorization easier for publishers with multiple games. This is an |
| 45 | + early release of this feature and only available to a limited number of partners for now. |
| 46 | + - Added [`Client::ExchangeChildToken`] to facilitate child token exchange for public clients. Confidential clients |
| 47 | + will require a server to server implementation, but this method may be useful for development. |
| 48 | + - Invites from sibling applications will be visible to the SDK. They can be identified by the `applicationId` field |
| 49 | + on the [`ActivityInvite`] payload. |
| 50 | + - Messages sent from other sibling applications will be visible to the SDK. They can be identified by the |
| 51 | + `ApplicationId` method on the [`MessageHandle`]. |
| 52 | +- Added [`Client::RevokeToken`] and [`Client::UnmergeIntoProvisionalAccount`] to allow games leveraging Public Clients to |
| 53 | + perform token revocation or unmerge operations directly from clients. |
| 54 | + |
| 55 | +### Android |
| 56 | + |
| 57 | +- The SDK is now compatible with 16KB page size. |
| 58 | + |
| 59 | +### Misc |
| 60 | + |
| 61 | +- Improved activity serialization, avoiding including null/empty keys in the JSON payload. |
| 62 | + |
| 63 | +<!-- Autogenerated Reference Links --> |
| 64 | +[`ActivityInvite`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ActivityInvite.html#af980f140c1459e1cd8f6ef3f3c07547c |
| 65 | +[`Client::ExchangeChildToken`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a59f5d9d14f79eb318bf4d57f4e87a5c1 |
| 66 | +[`Client::GetLobbyMessagesWithLimit`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a0586192e85caf548b8b321f1cb21301f |
| 67 | +[`Client::GetRelationships`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#ad481849835cd570f0e03adafcf90125d |
| 68 | +[`Client::GetRelationshipsByGroup`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a9f7898d3f3d1ec92b06c662df70746d5 |
| 69 | +[`Client::RevokeToken`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a30ccea6366efaf0b884efcdcc28a6f2d |
| 70 | +[`Client::SetAecDump`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a3a05b2cafaa546d915a5249c63f4059f |
| 71 | +[`Client::SetEngineManagedAudioSession`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#ade08897214152b9acfa79c263e77e366 |
| 72 | +[`Client::SetRelationshipGroupsUpdatedCallback`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#af12441ef091298f968075b7190851098 |
| 73 | +[`Client::UnmergeIntoProvisionalAccount`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a2da21ae8a3015e0e5e42c1a7226b256f |
| 74 | +[`ClientCreateOptions`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1ClientCreateOptions.html#ae655ad66ba64f443496c158307cc77b4 |
| 75 | +[`MessageHandle`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1MessageHandle.html#ae25595b43bc74b0c4c92c5165d16382f |
| 76 | +[`RelationshipHandle`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1RelationshipHandle.html#a7da36b15ad0b7d38ba658a622e9ded77 |
0 commit comments