> For the complete documentation index, see [llms.txt](https://docs.apryse.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apryse.com/xamarin/collaboration/server.md).

# Realtime collaboration server (Deprecated)

Learn how to set up a server for realtime collaboration with Apryse SDK in Xamarin.Android. Host annotations and sync data effortlessly for seamless collaboration. Explore server configuration and sam

A server can be setup to be the backend that hosts all your files and annotations to use realtime collaboration with Apryse SDK.

{% tabs %}
{% tab title="Android" %}

## Realtime collaboration basics

{% hint style="info" %}
**This tutorial only applies to Xamarin.Android.**
{% endhint %}

## Host annotations in your own server

In realtime collaboration, a server will merely act as an online database that triggers events upon data creation/modification/deletion. As long as the above requirement is met, your server can be built in any language and stack of your choice. Apryse provides an interface that will allow you to connect your data to the out-of-box UI.

1. Your will need to obtain a reference to `CollabManager` from the `CollabViewerTabHostFragment2`, then setup the current collaboration session, for example:

{% code lineNumbers="true" %}

```csharp
void HandleTabDocumentLoaded(String tag)
{
    // setup the current collaboration session
    var collabManager = mPdfViewCtrlTabHostFragment.CollabManager;
    if (collabManager != null)
    {
        collabManager.SetCurrentUser(mUserId, mUserName);
        collabManager.SetCurrentDocument(mDocumentId);
        collabManager.SendAnnotationEvent += (sender, e) =>
        {
            // local change, send info to server here
        };
    }
}
```

{% endcode %}

1. When your server notifies the client about remote changes, import the XFDF command string with `CollabManager`:

{% code lineNumbers="true" %}

```csharp
void ImportXfdf(String xfdfCommand) {
    var collabManager = mCollabViewerTabHostFragment.CollabManager;
    collabManager.ImportAnnotationCommand(xfdfCommand);
}
```

{% endcode %}

The annotations appearing on the document in real time are managed through a separate XFDF format, while the original version of the document is preserved on the server. Note that the client downloads the original untouched document at the start of the collaboration session.

And that is it! Apryse will handle all annotation syncing and annotation reply for you.
{% endtab %}

{% tab title="iOS" %}

## Realtime collaboration basics

[Server configuration](/xamarin/guides/ios/collab/server.md) Learn more about how to setup a server to work with realtime collaboration.

[Server samples](/xamarin/guides/ios/collab/server.md#server-samples) Explore sample projects that use Firebase and WebViewer server for realtime collaboration.
{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.apryse.com/xamarin/collaboration/server.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
