Platform Surface
| Platform | Repository | Main APIs |
|---|---|---|
| iOS | AmityChannelPresenceRepository() | syncChannelPresence(id:viewId:), unsyncChannelPresence(id:viewId:), unsyncAllChannelPresence(), getSyncingChannelPresence() |
| Android | AmityChatClient.newChannelPresenceRepository() | syncChannelPresence(channelId, viewId), unsyncChannelPresence(channelId, viewId), unsyncAllChannelPresence(), getSyncingChannelPresence() |
| TypeScript | Not available | Not available |
| Flutter | Not available | Not available |
Only conversation channels support channel presence. The SDK sync limit is 20 channel IDs at a time.
Parameters
| Operation | Parameter | Required | Description |
|---|---|---|---|
syncChannelPresence | id / channelId | Yes | Conversation channel ID whose members’ presence should be refreshed periodically. |
syncChannelPresence | viewId | No | Stable view identifier. Defaults to amity-global; use a custom value when the same channel can appear in multiple visible UI locations. |
unsyncChannelPresence | id / channelId | Yes | Channel ID to remove from syncing. |
unsyncChannelPresence | viewId | No | Must match the viewId used when syncing if you passed a custom value. |
unsyncAllChannelPresence | None | No | Stops syncing all channel presence tracked by the SDK presence engine. |
getSyncingChannelPresence | None | No | Returns iOS AnyPublisher<[AmityChannelPresence], Error> or Android Flowable<List<AmityChannelPresence>>. |
Channel Presence Object
| Field | iOS | Android | Description |
|---|---|---|---|
| Channel ID | presence.channelId | presence.getChannelId() | The conversation channel represented by the presence record. |
| User presences | presence.userPresences | presence.getUserPresences() | Presence records for members in the channel. |
| Any other member online | presence.isAnyMemberOnline | presence.isAnyMemberOnline() | true when at least one member other than the current user is online. |
Sync Channel Presence
Start syncing when a conversation channel becomes visible, then unsync it when the row or screen is gone.Unsync All Channel Presence
UseunsyncAllChannelPresence when leaving a channel list, tearing down a view model, or replacing the whole visible channel set.
Best Practices
Bind syncing to visible rows
Bind syncing to visible rows
Sync a channel when its conversation row appears. Unsync during row reuse, unmount, or screen dismissal so the app stays under the 20-channel sync limit.
Use channel presence as a summary
Use channel presence as a summary
isAnyMemberOnline is designed for compact channel-list indicators. If you need per-user badges, sync those users directly with User Presence.Start the current user's heartbeat
Start the current user's heartbeat
Other members can only see the current user as online if the app enables presence and starts the current user’s heartbeat.
Related Topics
User Presence
Sync specific users when you need per-user online badges.
Heartbeat Sync
Mark the current user as online with the SDK heartbeat.