Review Log (to be completed by GSMA Support Staff) Workflow Step Document Review Comments GSMA Support Staff Name Comments Date Step 1: Change Request Creation (no comments required) Step 2: Document Quality and/or Legal Review Document Quality Team Quality review completed and document deemed acceptable for formal review and approval following minor edits. James Moran 29/01/16 Review Legal review is not required Step 3: Formal Review Review(s) Comments and Feedback RCSJTA group has reviewed and approved the document Erdem Ersoz 05/02/16 Step 4: Formal Approval(s) Group(s)/Project(s) Approval(s) Comments and Feedback INSERT COMMENTS HERE Please enter details for the Group(s)/Project(s) Approval(s) Record any issues, actions and key decisions Confirm outcome of Formal Approval GSMA Support Name DD/MM/YY
“uri”: (android.net.Uri) uri of the contact. Intent: load the group chat application to start a new conversation with a group of contacts and send a file to them. This Intent takes into parameter a list of contact URIs (i.e. content://contacts/people/contact_ID). If no parameter, the main entry of the group chat application is displayed. static final String ACTION_INITIATE_GROUP_FILE_TRANSFER = "com.gsma.services.rcs.action.INITIATE_GROUP_FILE_TRANSFER" This Intent contains the following extra: “uris”: (List<android.net.Uri>) List of uris of the contacts. NOTE: For Intents using a contact URI as a parameter, if the contact has several phone numbers which are RCS compliant, then the application receiving the Intent should request to the user to select which phone number should be used by the service. NOTE: Sharing during a call & video) are part of the native dialer application and may be only visible when a call is established, in this case there is no public Intent to initiate a sharing. Services API Overview This section contains all the Service APIs. Each of the presented APIs may have a Core Application it, but a separate 3rd Party Application can also use it. Each API exposes all its functionality on a high level and does put constraints on the invoking application as to the preconditions and order of method calls. All Service APIs are stateless, meaning that any part of the API can be used without first satisfying any preconditions. Access Control Each of the services requires one or more permissions to be held by the calling application; the permissions associated by each service are defined in the sections that follow. Common architecture The RCS terminal API contains the following service API: Capability service API Chat API File Transfer API Video Share service API Image Share service API Geoloc Share service API History service API Multimedia Session service API File Upload API Each service API is based on a Client/Server model using the Android Interface Definition Language (AIDL) Android interface to communicate between the application using the
Method: removes a listener on service registration event. void removeEventListener(RcsServiceRegistrationListener listener) Method: returns the version of the service (see constants from class RcsService.Build.VERSION_CODES). int getServiceVersion() Method: returns the reason code for the service registration RcsServiceRegistration.ReasonCode getServiceRegistrationReasonCode() Interface RcsServiceListener: Method: callback called when service is connected. This method is called when the service is well connected to the RCS service (binding procedure successful): this means the methods of the API may be used. void onServiceConnected() Method: callback called when service has been disconnected. This method is called when the service is disconnected from the RCS service (e.g. service deactivated). void onServiceDisconnected(ReasonCode reasonCode) Enum: the reason code of the service disconnection. enum ReasonCode { INTERNAL_ERROR(0), SERVICE_DISABLED(1), CONNECTION_LOST(2) } RcsServiceRegistration: Enum: the reason code for RCS service unregistration. enum ReasonCode { UNSPECIFIED(0), CONNECTION_LOST(1), BATTERY_LOW(2) } Class RcsServiceRegistrationListener: Method: callback called when a service is registered to the RCS platform. This method is called when the terminal is registered to the RCS/IMS service platform. void onServiceRegistered() Method: callback called when a service is unregistered from RCS platform. This method is called when the terminal is not registered to the RCS service platform. void onServiceUnregistered(RcsServiceRegistration.ReasonCode reasonCode)
Method: returns the message content. String getContent() Method: returns the direction of the chat message. com.gsma.services.rcs.RcsService.Direction getDirection() Method: returns the mime type of the chat message. String getMimeType() Method: returns the timestamp of when the chat message was sent and/or queued for outgoing messages or the local timestamp of when the chat message was received for incoming messages.. long getTimestamp() Method: returns the local timestamp of when the chat message was sent and/or queued for outgoing messages or the remote timestamp of when the chat message was sent for incoming messages. long getTimestampSent()Method: returns the timestamp of when the chat message was delivered for outgoing messages or 0 for incoming messages or it was not yet delivered. long getTimestampDelivered() Method: returns the local timestamp of when the chat message was displayed for outgoing messages or 0 for incoming messages or it was not yes displayed. long getTimestampDisplayed() Method: returns true if delivery for this chat message has expired or is otherwise false. NOTE: False means either that delivery for this chat message has not yet expired, delivery has been successful, delivery expiration has been cleared (see clearMessageDeliveryExpiration) or that this particular chat message is not eligible for delivery expiration in the first place. boolean isExpiredDelivery() Method: returns the status of the chat message. Status getStatus()Method: returns the reason code of the chat message. ReasonCode getReasonCode() Method: returns the chat ID of this chat message. String getChatId()
Class VideoSharing: This class maintains the information related to a video sharing and offers methods to manage the sharing. public class Encoding { static String H264 = “H264”; } Enum: the VideoSharing state. enum { INVITED(0), INITIATING(1), STARTED(2), ABORTED(3), FAILED(4), REJECTED(5), RINGING(6), ACCEPTING(7) } Enum: the reason code for the sharing. enum ReasonCode { UNSPECIFIED(0), ABORTED_BY_USER(1), ABORTED_BY_REMOTE(2), ABORTED_BY_SYSTEM(3), REJECTED_BY_SECONDARY_DEVICE(4) , REJECTED_SPAM(5), REJECTED_MAX_SHARING_SESSIONS(6), REJECTED_BY_USER(7) REJECTED_BY_REMOTE(8), REJECTED_BY_TIMEOUT(9), REJECTED_BY_SYSTEM(10), FAILED_INITIATION(11), FAILED_SHARING(12) } Method: returns the sharing ID of the video sharing. String getSharingId() Method: returns the remote contact. ContactId getRemoteContact() Method: get the remote descriptor in case the video share direction is incoming, the local video descriptor in use in case of outgoing direction. VideoDescriptor getVideoDescriptor() Method: returns the of the video share. getState() Method: returns the reason code of the video sharing. ReasonCode getReasonCode() Method: returns the direction of the sharing: com.gsma.services.rcs.RcsService.Direction getDirection() Method: accepts video share invitation with a given renderer. It’s for the external codec. void acceptInvitation(VideoPlayer player) Method: rejects video share invitation. void rejectInvitation() Method: aborts the sharing.