brainCloud 5.8 is live!
Back to school with brainCloud!
Our new Classroom Invites feature makes it easy to set up a class of budding developers. Get organized with our new App Calendar! Plus Steam Ownership Checks, IAP Improvements, Push Optimizations, and more!
Compatibility Notes
brainCloud prioritizes API stability and backward compatibility for apps. The following configuration flags control key brainCloud 5.8 behaviours:
- Compatibility flag: Allow purchases without requiring a developer payload or cached purchase context. Defaults to ON for existing apps, OFF for new apps.
- Steam Platform setting: Steam Verify App Ownership. Defaults to OFF.
Release Highlights
Classroom Invites
We have supercharged our Team Member invitation system.
Not only can you now invite multiple team members at once, but we have also added the ability to quickly set up a student classroom, with each student getting their own personal app to work on. We even support importing team lists from .csv files.
brainCloud has always been great for student learning - now it’s even easier to get started.
App Calendar
This release adds a new Calendar view for apps. The Calendar automatically surfaces important initiatives like scheduled Redemption and Promotion campaigns.
It’s also a great place to note important dates like Soft Launches, New Feature Releases, Advertising Campaigns, etc. Just click the [+] button to add a new entry to the calendar.
If you are expecting a significant traffic surge associated with a new launch or promotion, you can give the brainCloud Ops team a heads up!
We will be building upon our Calendar system significantly in the coming releases - so stay tuned!
Improved IOS and Android In-App Purchases
We’ve had some complaints over the years regarding some limitations on the use of In-App Purchase price/item IDs – which are the codes that you define in iTunes Connect or Google Play for various IAP price points for your products.
[Note - the purchase interactions for other stores are different. Only the Apple and Google Play stores are subject to this limitation.]
The complaint is that developers cannot effectively reuse these codes across products. So if I (a dev) want to sell “Apples” for 1.99, and “Oranges” for 1.99 as well - I need to create two separate codes in the various app stores (“applesregprice” and “orangesregprice”) instead of re-using one shared code between them (e.g. “fruitregprice199”).
The reason for this is due to the context information that we can derive from the receipts. Basically, we are only receiving the IAP item ID from the store - and thus if you re-use the price in multiple places - we cannot tell what product a customer had purchased (and therefore what rewards to award the user). This situation only gets more complicated when Promotions (Sales) are involved.
We’ve been working to address this challenge - and 5.8 offers some relief - in two parts:
- First of all, the
AppStore.GetSalesInventory()
call now returns a new“payload”
field for each IAP product. This field contains important context information that can be used to derive the user's purchase more accurately. - The client app can now cache this context information to be used when processing a user’s IAP purchase. Simply call the new CachePurchasePayloadContext() method right before performing an Apple App Store or Google Play purchase, and brainCloud will automatically use the additional context information when processing the purchase receipt.
We highly recommend that all devs adjust their IOS and Google Play purchase flows to cache the new payload context. In the meantime, though, processing of the purchase context is optional as long as the new [x] Allow purchases without requiring a developer payload or cached purchase context compatibility flag is checked.
Steam Ownership Check
brainCloud’s Steam Authentication has been upgraded to [optionally] confirm that the player owns the game that they are logging into.
To enable this validation, go to the Steam settings section of the App > Design > Core App Info > Application IDs page, and enable “Steam Verify App Ownership”.
Local Datastream
Up until this release, our Datastream system was limited to streaming analytics events to external systems (via Segment or Kafka).
brainCloud 5.8 adds a new Local Datastream feature - that allows datastream events to be cached locally for a period of time (90 days by default) - for use in deeper analytics by brainCloud itself.
We will be building upon this new capability in future releases. Stay tuned!
Additional Improvements
This release includes many other improvements.
These include:
App Alerts - Max Server Nodes Reached
- brainCloud will now raise an alert if the “Max Server Nodes” setting is preventing additional servers from launching.
App Icon and Deployments
- We no longer overwrite the App Icon of the target app during deployment. This change allows devs to more effectively use unique icons for different stages of their app [eg. Dev vs. Staging vs. Production]
External Authentication Improvement
- We have extended the External Auth mechanism to allow auth scripts to set the user’s
identityData
.
- We have extended the External Auth mechanism to allow auth scripts to set the user’s
Push Notification Optimizations
- We have refactored our Push Notifications framework to improve performance for Apple and Google push notifications. These optimizations affect both push notifications sent to all users and notifications sent to specific user Segments.
- Note that there were no API changes associated with these optimizations.
Security Improvements
- Several security improvements have been made to the Portal UI and the underlying portal service calls.
Server Launch
- Our new Server Launch API allows devs to launch servers outside of Lobby processing.
Portal Changes
We continue to rapidly evolve and improve our Portal.
Calendar Screen
As introduced in the Feature Highlights section, our new Calendar screen is front-and-center in the Portal - located just under the Dashboard for your apps.
You’ll actually find multiple views of your Calendar entries here - one in the standard Calendar view, but also a List view that presents the entries in a simpler format (that also works for mobile devices).
Additional Improvements
The following additional portal improvements have been made:
Chart Colors
- We have adjusted the colors used for dev-defined items (like Products) to be more attractive
App > Design > Cloud Data > User Statistics
- Stats are now displayed in alphabetical order!
App > Design > Core App Info > Advanced Settings, Compatibility Settings
- New “Allow purchases without requiring a developer payload or cached purchase context” flag.
App > Design > Segmentation > Segments
- The criteria list is now searchable
App > Design > Promotions > Scheduled
- Portal users can now Clone scheduled promotions.
- The preview blade now shows only the IAP Product prices that have changed. This change applies to Automated Promotions as well.
App > Reports > Analytics > Product Category
- A new screen that breaks down how your IAP sales are going on a category basis.
User > Data > User Files
- Portal devs can now upload user files directly from the portal. This is useful in some debugging and corrective scenarios.
- Screen columns were also re-ordered to be more useful
Plus, for our Private Licensees:
Super > Manage > Manage Members
- The member list now shows the difference between regular and read-only Super users.
- The Invite dialog has also been improved to differentiate it from the Team-scoped invite dialog
Note - in addition to the new screens and polish, we have also upgraded the underlying portal tech to React 18 (from 16). With this upgrade comes valuable code and performance improvements (and the reduction of technical debt) - but it does mean that there is a greater than normal chance of regressions across the Portal. Please report any issues to support if you encounter them!
API Changes
The following changes/additions have affected the brainCloud API:
AppStore
- New
CachePurchasePayloadContext()
call added to supplement Apple and Google Play receipt verification - providing additional context.
- New
Authentication
AuthenticateExternal()
- the external auth script can now set the customidentityData
JSON associated with the identity.
Leaderboard
- Updated
SysListLeaderboardConfigs()
- now allows devs to specify thedivSetId
to query on iffilterType
is”divisions”
. ← Makes it easy to find all division instances for a particular set
- Updated
RoomServer
- The new RoomServer service has been added to allow direct launching of hosted servers. This service and its APIs are reachable by cloud code and S2S only.
- The new
SysLaunchServer()
method is used to launch a server of the named server type (as defined in My Servers). The dev must provide the ID of a callback script to handle events as the server launches. - The service also includes additional calls to support server interactions:
SysGetRoomMember()
,SysRoomEvent()
,SysRoomReady()
,SysRoomSessionEnded()
andSysRoomSessionStarted()
.
Libraries and Examples
Client Libraries
All Libraries
- New
CachePurchasePayloadContext()
call added to the AppStore Service API - Fixed a discrepancy in
RelayService.SetPingInterval()
to consistently use seconds instead of milliseconds - Removed deprecated functions
Unreal
- Fixed compatibility with UE 5.6
- Deprecated the
FindLobby()
function that was still using the in_timeoutsecs parameter, replaced withFindLobby()
function without that parameter
Examples
Unity
- Authentication Unity example added iOS Advertising Support as an option to enable full Facebook login
- Marketplace Unity example showcases
CachePurchasePayloadContext
for Android and iOS in-app purchases - Tic Tac Toe now supports online matchmaking to find matches in real-time.
Documentation and Tutorials
Documentation
- All the latest API additions and changes have been incorporated into our new doc site at docs.braincloudservers.com !