我想在FMX项目上为Android实现多个通知通道。
RAD 10.3.2 现在为 API>= 26 提供了一些支持,并自动创建了一个"回退"通知通道。它的默认描述是"Firebase 的通知频道",我想更改此描述并添加一些新频道。
在RAD 10.3.2中,新的选项/应用程序/服务参数提供了一个"默认本地通知通道ID",我想,它可以更改存储在构建或部署应用程序时生成的Strings.xml
文件中的fcm_fallback_notification_channel_label
的值。
但是,当我在此字段中编写类似"Infos"的 ID 时,这对生成的Strings.xml
文件内容没有影响。
因此,我将Strings.xml
文件复制到另一个目录中,手动编辑并修改部署以使用此文件而不是自动文件。
如果我卸载该应用程序并使用更改的频道描述重新安装它,这将起作用。最终用户现在可以看到通道的正确名称。
但是,我仍然只有一个频道,我不知道如何添加更多频道。
我已经在Android支持中搜索了,我看到频道应该通过应用程序的启动代码中的notificationManager.createNotificationChannel(channel)
添加。
但是,我在TPushService或TPushServiceConnection中找不到这些方法。德尔福是否有添加和删除通知通道的"标准"方法?
感谢 embarcadero 的支持,我得到了一个完整的答案。 用于创建和删除通知通道的 Androïd 方法位于为拦截设备令牌以及应用程序运行时收到的通知而创建的 TNotificationCenter 对象中。
可以使用以下方法:
function CreateChannel: TChannel; overload;
function CreateChannel(const AId: string; const ATitle: string; const ADescription: string = ''): TChannel; overload;
procedure CreateOrUpdateChannel(const AChannel: TChannel);
procedure DeleteChannel(const AChannelId: string);
procedure GetAllChannels(const AChannels: TChannels);
当我使用CreateOrUpdateChannel
创建通知通道时,我只需要通过在Project > Options... > Application > Services
projet 参数中以Default local notification channel id
形式写入其 id 来指定应用作回退通道的通道。
默认回退通知通道仅在以下情况下由德尔福/C++ Android 堆栈创建:
- 应用程序收到未设置
gcm.notification.android_channel_id
密钥的push notification payload
,并且您尚未设置默认notification channel id
- 应用程序收到未设置
gcm.notification.android_channel_id
键的push notification payload
,您已设置默认notification channel id
,但尚未在代码中创建默认notification channel
- 应用程序收到一个设置
gcm.notification.android_channel_id
密钥的push notification payload
,该notification channel
尚未在代码中创建,并且您尚未设置默认notification channel id
- 应用程序收到一个设置
gcm.notification.android_channel_id
键的push notification payload
,该notification channel
尚未在代码中创建,您已设置默认notification channel id
,但尚未在代码中创建默认notification channel