We’ve got a smaller release for you this time. We’ve got a few bigger features cooking in the fires – but in the meantime we thought we’d push out a few of the polish items and customer requests that we have queued.
Release Highlights
Authy OneTouch
We have enhanced our Two-Factor Authentication implementation to take advantage of Authy OneTouch for those users who are using the Authy App. It’s super convenient – no codes to enter! Just click [Approve] to confirm your login.
Customer API Requests
We’ve also released a few API enhancements at the request of some key customers. There are updates to Groups, Identities and the Cloud Code bridge. We hope you like them!
Portal Changes
We’ve made the following portal changes:
Login
During Two-Factor Authentication you’ll notice the red One Touch meter. It tells you that we’ve detected that you have the Authy app, and have sent a request that you can simply [Approve] without having to enter the authentication code. Note: The login screen will stop monitoring for One Touch approval after 5 minutes, after which you can still enter the verification code.
Power | Edit User
To ease the burden of 2FA, our login process optionally allows you to flag a device as trusted, so you won’t need to re-verify for 30 days. But what if you mistakenly hit that option when logging in from a public computer? Witness the new [Clear Trusted Devices] option on the Two-Factor tab of the Edit User dialog. Ta-dah! 🙂
Team Administrators can now unlink Two-factor Authentication from other user’s accounts (allows self-fixing of TFA-issues should they arise)
General
Minor updates (for clarification and consistancy) to icons used throughout the portal.
API Changes
The following changes/additions have affected the brainCloud API:
Cloud Code Bridge
New GetProfileId() method returns the profile id of the current user. Saves having to call to the PlayerState proxy for the information.
New GetName() method returns the name of the current user
New GetEmail() method returns the email address of the current user
Groups API
Updated GetMyGroups() method to additionally return groups that you have been invited to and have requested to join.
Identity API
New GetIdentities() method returns a list of the non-anonymous identities associate with the current profile. This method is useful to learn if the user has already associated a Facebook account with their profile, for example.
New GetExpiredIdentities() method returns a list of identitities with the current profile whose authentication tokens that have expired (and should be refreshed)
We have also deprecated the following methods:
Authentication Service
Deprecated GenerateGUID() and GenerateNewAnonymousId() – replaced with GenerateAnonymousId() method, which works in a more consistant manner.
Miscellaneous Changes / Fixes
Updated libraries
All libraries have been updated with the latest API enhancements. Go get ’em!
Documentation updates
Added Versioning overview to the Appendix summary of the API REF docs
Updated AsyncMatch documentation
Updated Leaderboard documentation
Better pre-hook cloud code examples
Source updates
Removed JSON return data from the client source code, since that data is now included (and more likely to be up-to-date) in the API REF documentation
Important Fixes
During login, if user’s timezone has changed, the user’s timezone as recorded in segments is updated as well
Fix to Facebook purchase handling which could sometimes cause virtual currencies to be awarded twice in some circumstances
Added Facebook real-time payments transactions to the request logs
Plus miscellaneous fixes and performance enhancements…
Xamarin Support – we have new iOS and Android libraries for Xamarin!
watchOS Support – built native apps on watchOS using brainCloud!
Plus the usual assortment of API and library improvements. Note that all client libraries have been updated to the latest, except Javascript, which will be updated and released mid-next-week (week of Friday May 18th).
Read on for all the details.
Release Highlights
Groups (i.e. Clans)
Although you’ve always been able to write your own clan system in brainCloud using Global Entities and Cloud Code, we thought it was about time that we lent a hand – reducing the coding burden, and adding great tools support at the same time.
This feature provides an API that allows users to dynamically create, join and manage Groups.
Groups have the following characteristics:
Groups are a combination of a collection of users, plus some shared data about those users
Groups in brainCloud are organized by Group Type. The developer defines a Group Type, setting certain rules such as maximum # of members, and the action to take if a Group’s owner is deleted.
There are three built-in roles – owner, admin and member
Groups are owned by a single user – but can have additional admins
Only the owner of a group may delete it. Owners may leave a group only if they re-assign ownership to another user.
Group membership can be open or closed. Open groups can be freely joined by anyone. Closed groups require an owner or admin to invite or approve join requests.
Groups can associate additional attribute data with members – which can allow for additional developer-defined role types (i.e. think ranks in Clash of Clans – Leader, Co-Leader, Elder, Member, etc)
A user can be a member of more than one Group. (Limits can be imposed by the developer, of course).
Group data is a JSON object associated with the group. Access to the data is controlled by the group ACL.
Groups can also own a set of entities (i.e. Group Entities) for more complex data needs. Group Entities can be owned by the group as a whole, or by individual members within a group.
Group membership can be used for leaderboard retrieval
brainCloud’s Two-Factor Authentication (2FA) support allows you to tie your phone to your developer account for extra security and peace-of-mind.
We’ve chosen to use Twilio’s Authy technology for our 2FA implementation – it works similarly to Google Authenticator, but gives more options in terms of authentication (text, voice, or app) and offers better management of verification devices.
Hooking up 2FA to your account couldn’t be simpler:
Choose Edit Profile from the top-right Power menu of the brainCloud Portal
Go to the new Two-factor tab
Click on the green [Click to Enable 2FA] button and follow the prompts!
For more information, refer to the Enabling 2FA page in our documentation.
Scheduled Push Notifications
Through the magic of scheduled cloud code and our push notification API, it’s always been possible to schedule push notifications to happen at a precise time. But – what if you want to send notifications to a segment of users, and ensure that those notifications get sent at a standardized local time – say 9am, for each of the users, regardless of their timezone? That was much, much harder.
Until now. Our new Schedule Push Notification interface allows you to specify a local time to send all notifications at. brainCloud will then automatically create the appropriate set of scheduled push notification jobs – one for each timezone involved – and then automatically send the notifications at the appropriate time for each group of users.
It’s extremely powerful, and very simple to use. Check out the new S2S API calls here.
Universal Windows Platform Support
We’ve created a new C++ library with support for Universal Windows Platform apps. And we’re making the library available via nuget as well. Stay tuned for more details.
Xamarin Support
With it’s recent acquisition by Microsoft, and integration into Visual Studio, we’re finding tons of interest in Xamarin support for brainCloud. We’re pleased to announce the availability of the brainCloud Xamarin.ios and Xamarin.android libraries!
watchOS Support
Apple has announced that moving forward, all new and updated watchOS apps must be native. We are here to help, so we’ve built a new version of the brainCloud library that runs natively on watchOS 2. You’re welcome!
Portal Changes
The first thing you will notice is that we have re-ordered the tabs of the Design section of the portal to be mostly alphabetical (we still kept the Core App Info section at the top). We’ve added (and continued to add) so many features to brainCloud, going alphabetical seems like the only way to keep things easily findable.
In addition, we’ve made the following portal changes:
Power | Edit User
Moved the Password section to a separate tab for clarity.
Added a new Two-Factor tab for enabling Two-Factor Authentication (2FA).
Admin | Team Members
Added a 2FA column so that you can confirm which team members have enabled Two-Factor Authentication for additional security.
Design | Cloud Code | Scripts
The scripts screen is now sortable according to the date+time that the scripts were last updated.
Design | Groups
The new Group Types screen to allow you to define that types of groups that your application will support. Configuration information includes the maximum # of users allowed per group (default is 50 – contact us if you need higher), and what the system should do if the owner of a group is deleted.
Monitoring | Global Monitoring | Jobs
Added support for viewing Scheduled Push Notification jobs.
Monitoring | Group Monitoring
Added new Group Monitoring section to allow you to view and manage an application’s global user groups
The Groups screen presents a list of all groups, filterable by type of group. You can view the details of a Group by clicking on it – you can even edit the Group’s json-data.
The Group Entities screen displays a list of entities associated with groups. The list is filterable by entity type and/or group id. Pro-tip – to clickly see a group’s entities, look up the group in Group Monitoring first, and then choose “View Group Entities” from the action menu.
Monitoring | User Monitoring | Groups
Shows the groups that a user is a member of, together with details about the group and the user’s membership.
API Changes
The following additions / changes have been made to the brainCloud API:
Global Entities
New IncrementGlobalEntityData() method allows you to increment discrete numeric values in a global entity. Great for incrementing atomic stats-like values without pushing a full update to the entire JSON object.
New Group API
There are too many new API methods to list here. For the full description of the new Group and Group Entity APIs, see the Groups section of the API Reference documentation.
Leaderboard API
New GetGroupSocialLeaderboard() method retrieves a leaderboard filtered to the members of the specified group
New IncrementUserEntityData() method allows you to increment discrete numeric values in a user entity. Just as useful as the GlobalEntity, Group and GroupEntity versions of the same method!
New GetSharedEntitiesListForPlayerId() method retrieves a list of shared entities for the specified player based on the specified where clause
Miscellaneous Changes / Fixes
New/updated libraries
New Universal Windows Platform (UWP) C++ libs
New iOS and Android Xamarin libs
New watchOS libs
Upgraded version of OpenSSL in C++ libs
Fixes and changes
Pre-hook cloud-code methods can no longer directly call the API that invoked them (prevents recursion loops!)
Documentation Updates
Migrated reason codes over to new API Ref docs
Improved performance of new API Ref docs — Table-of-Contents now cached
API doc links in API explorer moved to new API Ref