xamarin-client-apis

*We assure you that we do not spam. You may receive occasional emails from us.
 You can always unsubscribe.
Xamarin

Xamarin Client APIs

Initialize
public static void Initialize(String apiKey, String privateKey)

Initializes the singleton instance of WarpClient with the developer credentials. This has to be called only once during the lifetime of the application. It is required before you can call any other API.

Parameters

apiKey - The Application key given when the application was created.
secretKey - The secret key corresponding to the application key given when the application was created.

Returns

void

Connect

Sets up your connection with the AppWarp cloud server. The username passed in this method must be unique across all other concurrently connected users. If two users with the same name try to connect at the same time, then the last one will win and the older one will get disconnected. The result of the operation is provided in the onConnectDone callback of the ConnectionRequestListener.

public void Connect(String username)
Parameters

username - name of the player

Returns

void

Disconnect

Disconnects the connection with the AppWarp server. The result for this request will be provided in the onDisConnectDone callback of the ConnectionRequestListener.

public void Disconnect()

Parameters

Returns

void

Get Connection State

Queries the connection state of the client with the server. The returned byte value should be interpreted as WarpConnectionState.

public byte GetConnectionState()

Parameters

Returns

byte

Join Lobby

Sends a join lobby request to the server. Result of the request is provided in the onJoinLobbyDone callback of the registered LobbyRequestListener objects.

public void JoinLobby()

Parameters

Returns

void

Leave Lobby

Sends a leave lobby request to the server. Result of the request is provided in the onLeaveLobbyDone callback of the registered LobbyRequestListener objects.

public void LeaveLobby()

Parameters

Returns

void

Subscribe Lobby

Sends a subscribe lobby request to the server. Result of the request is provided in the onSubscribeLobbyDone callback of the registered LobbyRequestListener objects. Users which have subscribed to the lobby receive chat events from other users in the lobby as well as join/leave notifications about all players to and fro the lobby and all the rooms. In addition, lobby subscribers get notifications when a new room is created or deleted. All these notification events are given in the registered NotifyListener objects.

public void SubscribeLobby()

Parameters

Returns

void

UnSubscribe Lobby

Sends a unsubscribe lobby request to the server. Result of the request is provided in the onUnsubscribeLobbyDone callback of the LobbyRequestListener.

public void UnsubscribeLobby()

Parameters

Returns

void

Join Room

Sends a join room request to the server. Result of the request is provided in the onJoinRoomDone callback of the registered RoomRequestListener objects. A user can only be joined in one location (room or lobby) at a time. If a user joins a room, it will automatically be removed from its current location.

public void JoinRoom(String roomId)

Parameters

roomId - Id of the room to be joined

Returns

void

Join Room In Range

Sends a join room request to the server with the given range of joined users. Result of the request is provided in the onJoinRoomDone callback of the registered RoomRequestListener objects. A user can only be joined in one location (room or lobby) at a time. If a user joins a room, it will automatically be removed from its current location. This enables developers to easily add quick-play scenarios.

public void JoinRoomInRange(int minUserCount, int maxUserCount, bool maxPreferred)

Parameters

minUserCount - minimum users in the room

maxUserCount - maximum users in the room

maxPreferred - prefer joining a room with more users

Returns

void

Get Rooms In Range

Sends a request to the server to fetch a list of rooms with the given range of joined users. Result of the request is provided in the onGetMatchedRoomsDone callback of the registered ZoneRequestListener objects.

public void GetRoomsInRange(int minUserCount, int maxUserCount)

Parameters

minUserCount - minimum users in the room

maxUserCount - maximum users in the room

Returns

void

Join Room WithN User

Sends a join room request to the server with the condition that the room must have at least the given number of users. Result of the request is provided in the onJoinRoomDone callback of the registered RoomRequestListener. This is deprecated and developers should use the JoinRoomInRange API instead.

public void JoinRoomWithNUser(int userCount)

Parameters

userCount- minimum number of users in room

Returns

void

Join Room With Properties

Sends a join room request to the server with the condition that the room must have a matching set of property value pairs associated with it. This is useful in match making. Result of the request is provided in the onJoinRoomDone callback of the registered RoomRequestListener.

public void JoinRoomWithProperties(Dictionary<String, Object> tableProperties)

Parameters

tableProperties- properties of the room to be joined

Returns

void

Leave Room

Sends a leave room request to the server. Result of the request is provided in the onLeaveRoomDone callback of the registered RoomRequestListener.

public void LeaveRoom(String roomId)

Parameters

roomId - Id of the room to be left

Returns

void

Create Room

Sends a create room request to the server with the given meta data. Result of the request is provided in the onCreateRoomDone callback of the registered ZoneRequestListener objects. If successful, this will create a dynamic room at the server. These rooms lifetime is limited till the time users are inside it. Read more about Rooms here.

public void CreateRoom(String name, String owner, int maxUsers, Dictionary<String, Object> tableProperties)

Parameters

name - name of the room
owner - owner of the room (behavior and usage of this meta property is up to the developer)
maxUsers - number of maximum users allowed in the room
tableProperties - properties of room (can be null)

Returns

void

Create Turn Room

Sends a create turn based room request to the server with the given meta data. Result of the request is provided in the onCreateRoomDone callback of the registered ZoneRequestListener objects. If successful, this will create a dynamic turn based room at the server. These rooms lifetime is limited till the time users are inside it. Read more about Rooms here.

public void CreateTurnRoom(String name, String owner, int maxUsers, Dictionary<String, Object> tableProperties, int turnTime)

Parameters

name - name of the room
owner - owner of the room (behavior and usage of this meta property is up to the developer)
maxUsers - number of maximum users allowed in the room
tableProperties - properties of room (can be null)
turnTime - the time (in seconds) allowed for a user to complete its turn and send a move.

Returns

void

Send Move

Sends a move to the server for the joined turn based room.Result of the request is provided in the onSendMoveDone callback of the registered TurnBasedRoomListener objects. If the joined user is not a turn based room or if its not the users turn, this request will fail. If successful, this will result in onMoveCompleted notification for all the subscribed users on the registered NotifyListener objects.

public void sendMove(String moveData)

Parameters

moveData - any meta data associated with the move

Returns

void

Delete Room

Sends a delete room request to the server. Result of the request is provided in the onDeleteRoomDone callback of the registered ZoneRequestListener objects. Only dynamic rooms can be deleted through this API. Static rooms (created from AppHQ) can not be deleted through this. Read more about Rooms here.

public void DeleteRoom(String roomId)

Parameters

roomId - Id of the room to be deleted

Returns

void

Subscribe Room

Sends a subscribe room request to the server. Result of the request is provided in the onSubscribeRoomDone callback of the registered RoomRequestListener objects. Once subscribed, the client will receive all notifications from the room such as chat, update and property change events. In addition the client will also receive notifications when a user joins or leaves the subscribed room. These notifications are given in the registered NotifyListener objects.

public void SubscribeRoom(String roomId)

Parameters

roomId - Id of the room to be subscribed

Returns

UnSubscribe Room

Sends a unsubscribe room request to the server. Result of the request is provided in the onUnSubscribeRoomDone callback of the registered RoomRequestListener objects.

public void UnSubscribeRoom(String roomId)

Parameters

roomId - Id of the room to be unsubscribed

Returns

void

Send Chat

Sends a chat message to the room (or lobby) in which the user is currently joined. Result of the request is provided in the onSendChatDone callback of the registered ChatRequestListener objects. All users who are subscribed to the location in which the message is sent will get a onChatReceived event on their registered NotifyListener objects.

public void SendChat(String message)

Parameters

message - message to be send

Returns

void

Send Private Chat

Sends a private message to the given user if its online. Result of the request is provided in the onSendPrivateChatDone callback of the registered ChatRequestListener objects. The sender and receiver don’t need to be in the same room or lobby for the private message to be delivered. This is useful in building invite/challenge friend like scenarios. If successful, the receiver will get a onPrivateChatReceived event on its registered NotifyListener objects.

public void sendPrivateChat(String username, String message)

Parameters

username - recipient of the message

message - message to be send

Returns

void

Send Update Peers

Sends a byte array update message to room in which the user is currently joined. Result of the request is provided in the onSendUpdateDone callback of the registered UpdateRequestListener objects. All users who are subscribed to the room in which the update is sent will get a onUpdatePeersReceived event on their registered NotifyListener objects. This is useful if developers want to send their own binary encoded data across and is useful in minimizing the payload exchanged between the clients and AppWarp cloud server. The frequency at which these messages can be processed is not restricted by the server. However, the latency involved is largely determined by the client’s bandwidth. The corresponding UDP flavor of this API is sendUdpUpdatePeers, which is unreliable and may not work over cellular data connections – hence no result callback should be expected from it. The behavior is otherwise similar.

public void SendUpdatePeers(byte[] update)

Parameters

update - byte array data to be sent

Returns

void

Get Live Room Info

Retrieves the live information of the given room from the server. Result is provided in the onGetLiveRoomInfoDone callback of the registered RoomRequestListener objects. The information includes the names of the currently joined users, the rooms properties and any associated customData. This is useful in getting a snapshot of a rooms state.

public void GetLiveRoomInfo(String roomId)

Parameters

roomId - Id of the room

Returns

void

Get Live User Info

Retrieves the live information of the user from the server. Result is provided in the onGetLiveUserInfo callback of the registered ZoneRequestListener objects. The information (if user is online) includes the current location of the user and any associated custom data. It is useful in building scenarios where you want to find if a users friends are online or not and then join their room if found online.

public void GetLiveUserInfo(String username)

Parameters

username - user who's information is requested

Returns

void

Get Live Lobby Info

Retrieves live information of the lobby from the server. Result is provided in the onGetLiveLobbyInfo callback of the registered LobbyRequestListener objects. The information returned includes the names of the users who are currently joined in the lobby.

public void GetLiveLobbyInfo()

Parameters

Returns

void

Set Custom User Data

Updates the custom data associated with the given user on the server (if the given user is online). Result is provided in the onSetCustomUserDataDone callback of the registered ZoneRequestListener objects. It can be useful in setting status messages or avatar url’s etc for online users.

public void SetCustomUserData(String userName, String customData)

Parameters

userName - user for whom custom data has to be update
customData - custom data that will be set for the user

Returns

void

Set Custom Room Data

Updates the custom data associated with the given room on the server. The result is provided in the onSetCustomRoomDataDone callback of the registered RoomRequestListener objects. It is recommended you use the room’s properties where ever possible. Use this when you need to associate data with a room which can not be represented as key value pairs.

public void SetCustomRoomData(String roomId, String customRoomData)

Parameters

roomId - Id of the room
customRoomData - custom data that will be set for the room

Returns

void

Update Room Properties

Updates the properties associated with the given room on the server. Result is provided in the onUpdatePropertyDone callback of the registered RoomRequestListener objects. Properties which are not found on the server, will be added while properties which are already present will simply be updated with the new values. You can also specify the list of properties that you want to remove from the remove. This request (if successful) will also result in an onUserChangeRoomProperty notification on the registered NotifyListener objects to be triggered for all subscribed users of the room.

public void UpdateRoomProperties(String roomID, Dictionary<String, Object> tableProperties, List<String> removeList)

Parameters

roomId - Id of the room
tableProperties- Properties of the room to be added or updated.
removeList - List of properties to be removed.

Returns

void

Lock Properties

Locks the given room properties associated with the currently joined room on the server. Result is provided in the onLockPropertiesDone callback of the registered RoomRequestListener objects. If any property is currently locked by another user, this request will fail. This request (if successful) will also result in an onUserChangeRoomProperty notification on the registered NotifyListener objects to be triggered for all subscribed users of the room.

public void LockProperties(Dictionary<String, Object> lockedProperties)

Parameters

lockedProperties - dictionary of keys and their values to be locked for the user

Returns

void

Unlock Properties

Unlocks the given room properties associated with the currently joined room on the server. Result is provided in the onUnlockPropertiesDone callback of the registered RoomRequestListener objects. If any property is currently locked by another user, this request will fail. This request (if successful) will also result in an onUserChangeRoomProperty notification on the registered NotifyListener objects to be triggered for all subscribed users of the room.

public void UnlockProperties(List<String> properties)

Parameters

properties - list of keys to be unlocked for the user

Returns

void

Get Online Users

Retrieves usernames of all the users connected (online) to the server. Result is provided in the onGetOnlineUsers callback of the registered ZoneRequestListener objects.

public void GetOnlineUsers()

Parameters

Returns

void

Get All Rooms

Retrieves the room ids of all the rooms on the server. Result is provided in the onGetAllRoomsDone callback of the registered ZoneRequestListener objects. To get a filtered list of rooms, use the GetRoomWithNUser or GetRoomWithProperties APIs.

public void GetAllRooms()

Parameters

Returns

void

Get Room WithN User

Retrieves information of the rooms that contain at least n users in them. Result is provided in the onGetMatchedRoomsDone callback of the registered ZoneRequestListener objects. This is deprecated and developers should use the GetRoomsInRange API instead.

public void GetRoomWithNUser(int userCount)

Parameters userCount - No of user in room

Returns

void

Get Room With Properties

Retrieves information of the room that contain properties which match with the given properties. Result is provided in the onGetMatchedRoomsDone callback of the registered ZoneRequestListener objects. This is useful in building a filtered list of rooms.

public void GetRoomWithProperties(Dictionary<String, Object> properties)

Parameters properties- Properties of the room to be matched

Returns

void

Add Connection Request Listener

Adds (registers) the given listener object to the list of objects on which callbacks will be invoked when a response from the server is received for Connect and Disconnect APIs. The object must implement the ConnectionRequestListener interface.

public void AddConnectionRequestListener(ConnectionRequestListener listner)

Parameters

listener - listener object

Returns

void

Add Room Request Listener

Adds (registers) the given listener object to the list of objects on which callbacks will be invoked when a response from the server is received for requests pertaining to a room. The object must implement the RoomRequestListener interface.

public void AddRoomRequestListener(RoomRequestListener listner)

Parameters

listener - listener object

Returns

void

Add Zone Request Listener

Adds (registers) the given listener object to the list of objects on which callbacks will be invoked when a response from the server is received for zone level requests such as create/delete room or live user info requests. The object must implement the ZoneRequestListener interface.

public void AddZoneRequestListener(ZoneRequestListener listner)

Parameters

listener - listener object

Returns

void

Add Lobby Request Listener

Adds (registers) the given listener object to the list of objects on which callbacks will be invoked when a response from the server is received for lobby level request. The object must implement the LobbyRequestListener interface.

public void AddLobbyRequestListener(LobbyRequestListener listner)

Parameters

listener - listener object

Returns

void

Add Notification Listener

Adds (registers) the given listener object to the list of objects on which callbacks will be invoked when a notification is received from the server from any subscribed location (room or lobby). The object must implement the NotifyListener interface.

public void AddNotificationListener(NotifyListener listner)

Parameters

listener - listener object

Returns

void

Add Update Request Listener

Adds (registers) the given listener object to the list of objects on which callbacks will be invoked when a response from the server is received for a SendUpdatePeers request. The object must implement the UpdateRequestListener interface.

public void AddUpdateRequestListener(UpdateRequestListener listener)

Parameters

listener - listener object

Returns

void

Add Chat Request Listener

Adds (registers) the given listener object to the list of objects on which callbacks will be invoked when a response from the server is received for a SendChat request. The object must implement the ChatRequestListener interface.

public void AddChatRequestListener(ChatRequestListenerlistener listener)

Parameters

listener - listener object

Returns

void

Add Turn Based Room Request Listener

Adds (registers) the given listener object to the list of objects on which callbacks will be invoked when a response from the server is received for a SendMove request. The object must implement the TurnBasedRoomListener interface.

public void AddTurnBasedRoomRequestListener(TurnBasedRoomListener listener)

Parameters

listener - listener object

Returns

void

setGeo

setGeo allows you to connect to our cloud servers in locations other than the default location. This offers developers the choice to connect to the closest server depending on the client’s device location.

 public void SetGeo(String geo) 

Parameters

geo - server location. For e.g. US, EU, JAPAN

Returns

void