client.addDevice(
Device(
token = "push-provider-token",
pushProvider = PushProvider.FIREBASE,
providerName = "provider_name", // Optional, if adding to multi-bundle named provider
)
).enqueue { result ->
if (result.isSuccess) {
// Device was successfully registered
} else {
// Handle result.error()
}
}
Push Devices
Once your app has enabled the push notifications, you can use the APIs to register user devices such as iPhones and Android phones.
Each chat user has a limit of 25 unique devices. Once this limit is reached, the oldest device will be removed and replaced by the new device.
Device Parameters
name | type | description | default | optional |
---|---|---|---|---|
user_id | string | The user ID for this device | - | |
id | string | The device ID. | - | |
push_provider | string | The push provider for this device. Either APN, Firebase, Huawei, or Xiaomi. | - | |
disabled | boolean | Set if the device is disabled | - | ✓ |
disabled_reason | string | Explanation if the device is disabled | - | ✓ |
push_provider_name | string | The push provider name for this device if a multi-bundle configuration is added. | - | ✓ |
Register a Device
Registering a device associates it with a user and tells the push provider to send new message notifications to the device.
Register the user’s device for remote push notifications once your user is successfully connected to Chat.
Multi-bundle configurations require that you specify a push_provider_name when registering a device that corresponds to the name of the push configuration that you’ve set up in the dashboard or via the API.
const id = "2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207";
const push_provider = "apn";
const user_id = "Taquito";
await client.addDevice(id, push_provider, user_id);
// if multi providers
await client.addDevice(id, push_provider, user_id, push_provider_name);
client.add_device(
'2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207',
'apn',
'42'
)
client.add_device(
'2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207',
'apn',
'42'
)
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
) {
// Note: If you leverage mutli-bundle configuration, please provide providerName - name of your configuration
chatClient.currentUserController().addDevice(.apn(token: deviceToken)) { error in
if let error = error {
print("Error adding device token.", error)
}
}
}
stream chat:push:device:add \
--device_id '2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207'
--user_id '42'
--provider 'apn'
$add = $client->addDevice(
'2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207',
'apn',
'elon'
);
// register the device with APN (Apple only)
await client.addDevice("device-token", "apn");
// register the device with Firebase (Android only)
await client.addDevice("device-token", "firebase");
_ = client.AddDevice(ctx, &Device{
ID: "2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207",
UserID: "elon",
PushProvider: PushProviderAPNS,
})
// register the device with APN (Apple only)
Client->AddDevice(TEXT("device-token"), EPushProvider::Apn);
// register the device with Firebase (Android only)
Client->AddDevice(TEXT("device-token"), EPushProvider::Firebase);
await deviceClient.AddDeviceAsync(new Device
{
Id = "2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207",
PushProvider = "apn",
UserID = "<user_id>",
});
await Client.DeviceApi.AddDeviceAsync(new CreateDeviceRequest
{
//Device ID provided by the notifications provider e.g. Token provided by Firebase Messaging SDK
Id = "unique-device-id",
PushProvider = PushProviderType.Firebase,
});
Unregister a Device
Unregistering a device removes the device from the user and stops further new message notifications.
client.deleteDevice(
Device(
token = "push-provider-token",
pushProvider = PushProvider.FIREBASE,
providerName = "custom_name", // Optional, if added to multi-bundle named provider
)
).enqueue { result ->
if (result.isSuccess) {
// Device was successfully unregistered
} else {
// Handle result.error()
}
}
const id = "2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207";
const user_id = "Taquito";
await chatClient.removeDevice(id, user_id);
client.delete_device(
'2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207',
'42'
)
client.delete_device(
'2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207',
'42'
)
let currentUserController = chatClient.currentUserController()
guard let device = currentUserController.currentUser?.currentDevice else {
// No device to remove
}
currentUserController.removeDevice(id: device.id) { error in
if let error = error {
print("Error removing the device", error)
}
}
stream chat:push:device:delete \
--device_id '2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207'
--user_id '42'
$delete = $client->deleteDevice(
'2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207',
'elon'
);
await client.removeDevice("device-token");
deviceID := "2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207"
userID := "elon"
_ = client.DeleteDevice(ctx, userID, deviceID)
Client->RemoveDevice(TEXT("device-token"));
await deviceClient.RemoveDeviceAsync("2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207", "Taquito");
await Client.DeviceApi.RemoveDeviceAsync(deviceId, Client.UserId);
List Devices
Provides a list of all devices associated with a user.
client.getDevices().enqueue { result ->
if (result.isSuccess) {
val devices: List<Device> = result.data()
} else {
// Handle result.error()
}
}
const user_id = "Taquito";
await chatClient.getDevices(user_id);
client.get_devices(user_id)
client.get_devices(user_id)
$client->getDevices($userID)
client.GetDevices(ctx, userID)
stream chat:push:device:get --user_id '42'
let currentUserController = chatClient.currentUserController()
currentUserController.synchronizeDevices { error in
guard error == nil else {
print("Error getting the list of devices")
return
}
let devices = currentUserController.currentUser?.devices
}
Client->ListDevices(
[](const TArray<FDevice> Devices)
{
// Do something with Devices
});
await deviceClient.GetDevicesAsync(userId);
var response = await Client.DeviceApi.ListDevicesAsync(Client.UserId);
foreach (var userDevice in response.Devices)
{
Debug.Log(userDevice.Id); // Unique Device ID provided by push notifications provider
Debug.Log(userDevice.CreatedAt);
Debug.Log(userDevice.PushProvider); //E.g. Firebase
Debug.Log(userDevice.Disabled);
Debug.Log(userDevice.DisabledReason);
}