API surface
| Platform | Manager | Read | Enable | Disable all |
|---|---|---|---|---|
| TypeScript | Client.notifications().user() | getSettings() | enable(modules?) | disableAllNotifications() |
| iOS | client.notificationManager | getSettings() | enable(for:) | disableAllNotifications() |
| Android | AmityCoreClient.notifications().user() | getSettings() | enable(moduleModifiers?) | disableAllNotifications() |
| Flutter | AmityCoreClient.notifications().user() | getSettings() | enable(eventModifiers) | disable() |
Parameters
| Name | Platform | Type | Required | Description |
|---|---|---|---|---|
modules | TypeScript | Amity.UserNotificationModule[] | No | Module-level settings to send with enable. |
modules | iOS | [AmityUserNotificationModule]? | No | Module-level settings passed to enable(for:). |
moduleModifiers | Android | List<AmityUserNotificationModule.MODIFIER>? | No | Module modifiers passed to enable. |
eventModifiers | Flutter | List<UserNotificationModifier>? | Nullable | Module modifiers passed to enable. |
roleFilter | TypeScript, iOS, Android, Flutter | Role filter | No | Optional filter for receiving notifications only from matching sender roles. |
Modules
| Module value | TypeScript enum | iOS case | Android/Flutter modifier |
|---|---|---|---|
chat | CHAT | .chat | CHAT / Chat |
social | SOCIAL | .social | SOCIAL / Social |
video-streaming | VIDEO_STREAMING | .videoStreaming | VIDEO_STREAMING / VideoStreaming |
Get user settings
Read account-wide notification settings before rendering global or module-level push controls.import { Client, NotificationRolesFilterTypeEnum } from '@amityco/ts-sdk';
const settings = await Client.notifications()
.user()
.getSettings();
const isEnabled = settings.isEnabled;
settings.modules.forEach(module => {
const moduleName = module.moduleName;
const moduleEnabled = module.isEnabled;
if (module.rolesFilter?.type === NotificationRolesFilterTypeEnum.ONLY) {
const roleIds = module.rolesFilter.roleIds;
updateUI({ moduleName, moduleEnabled, roleIds });
}
});
let notificationManager = client.notificationManager
let settings = try await notificationManager.getSettings()
let isEnabled = settings.isEnabled
for module in settings.modules {
switch module.moduleType {
case .chat:
print("chat enabled: \(module.isEnabled)")
case .social:
print("social enabled: \(module.isEnabled)")
case .videoStreaming:
print("video streaming enabled: \(module.isEnabled)")
@unknown default:
print("unknown module enabled: \(module.isEnabled)")
}
}
AmityCoreClient.notifications()
.user()
.getSettings()
.doOnSuccess { settings ->
val isEnabled = settings.isEnabled()
settings.getModules()?.forEach { module ->
when (module) {
is AmityUserNotificationModule.CHAT -> {
val moduleEnabled = module.isEnabled()
}
is AmityUserNotificationModule.SOCIAL -> {
val moduleEnabled = module.isEnabled()
val rolesFilter = module.getRolesFilter()
}
is AmityUserNotificationModule.VIDEO_STREAMING -> {
val moduleEnabled = module.isEnabled()
}
else -> Unit
}
}
}
.doOnError { error ->
// Handle error.
}
.subscribe()
final settings = await AmityCoreClient
.notifications()
.user()
.getSettings();
final isEnabled = settings.isEnabled;
settings.events?.forEach((module) {
final moduleEnabled = module.isEnabled;
final rolesFilter = module.rolesFilter;
});
Update user settings
Enable, disable, or customize account-wide notification modules after the user changes global push preferences.import {
Client,
NotificationRolesFilterTypeEnum,
UserNotificationModuleNameEnum,
} from '@amityco/ts-sdk';
await Client.notifications()
.user()
.enable([
{
moduleName: UserNotificationModuleNameEnum.CHAT,
isEnabled: true,
},
{
moduleName: UserNotificationModuleNameEnum.SOCIAL,
isEnabled: true,
rolesFilter: {
type: NotificationRolesFilterTypeEnum.ONLY,
roleIds: ['community-moderator'],
},
},
{
moduleName: UserNotificationModuleNameEnum.VIDEO_STREAMING,
isEnabled: false,
},
]);
await Client.notifications()
.user()
.disableAllNotifications();
let notificationManager = client.notificationManager
try await notificationManager.enable(for: [
AmityUserNotificationModule(
moduleType: .chat,
isEnabled: true,
roleFilter: nil
),
AmityUserNotificationModule(
moduleType: .social,
isEnabled: true,
roleFilter: AmityRoleFilter.onlyFilter(withRoleIds: ["community-moderator"])
),
AmityUserNotificationModule(
moduleType: .videoStreaming,
isEnabled: false,
roleFilter: nil
),
])
try await notificationManager.disableAllNotifications()
val rolesFilter = AmityRolesFilter.ONLY(AmityRoles(listOf("community-moderator")))
val chatModifier = AmityUserNotificationModule.CHAT.enable()
val socialModifier = AmityUserNotificationModule.SOCIAL.enable(rolesFilter)
val videoStreamingModifier = AmityUserNotificationModule.VIDEO_STREAMING.disable()
AmityCoreClient.notifications()
.user()
.enable(
moduleModifiers = listOf(
chatModifier,
socialModifier,
videoStreamingModifier
)
)
.doOnComplete {
// User notification settings updated.
}
.doOnError { error ->
// Handle error.
}
.subscribe()
AmityCoreClient.notifications()
.user()
.disableAllNotifications()
.subscribe()
final rolesFilter = Only(AmityRoles(roles: ['community-moderator']));
await AmityCoreClient
.notifications()
.user()
.enable([
Chat.enable(null),
Social.enable(rolesFilter),
VideoStreaming.disable(),
]);
await AmityCoreClient
.notifications()
.user()
.disable();
Related
Channel Settings
Configure push settings for a chat channel.
Community Settings
Configure push settings for social community events.