我想在FMX项目上为Android实现多个通知渠道。
RAD 10.3.2现在为API> = 26提供了一些支持,并且会自动创建一个“后备”通知通道。它的默认描述是“ Firebase的通知渠道”,我想更改此描述以及添加一些新渠道。
在RAD 10.3.2中,新的Options / Application / Services参数提供了一个“默认本地通知通道ID”,我想是可以用来更改存储在{{1中的fcm_fallback_notification_channel_label
}}文件是在构建或部署应用程序时生成的。
但是,当我在此字段中编写类似“信息”的ID时,这对生成的Strings.xml
文件内容没有影响。
因此,我已将Strings.xml
文件复制到另一个目录中,对其进行手动编辑并修改了部署,以便使用此文件而不是自动文件。
如果我卸载该应用程序并使用更改的频道说明重新安装它,则此方法有效。现在,最终用户可能会看到正确的频道名称。
但是,我仍然只有一个频道,而且我不知道如何添加更多频道。
我搜索了Android支持,发现应该在应用程序的起始代码中通过Strings.xml
添加频道。
但是,我发现无法在TPushService或TPushServiceConnection中访问这些方法。 Delphi中是否有添加和删除通知渠道的“标准”方式?
答案 0 :(得分:0)
感谢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
创建通知频道时,只需在Default local notification channel id
的{{1}}中写入其ID,即可指定将其用作备用频道的通知频道projet参数。
在以下情况下,默认的后备通知通道仅由Delphi / C ++ Android堆栈创建:
Project > Options... > Application > Services
键的push notification payload
,并且您尚未设置默认的gcm.notification.android_channel_id
notification channel id
键的push notification payload
,您已经设置了默认的gcm.notification.android_channel_id
,但是尚未在代码中创建默认的notification channel id
notification channel
,它设置了push notification payload
键,尚未在代码中创建gcm.notification.android_channel_id
,并且您还没有设置默认的notification channel
notification channel id
并设置了push notification payload
键,表明尚未在代码中创建gcm.notification.android_channel_id
,您已经设置了默认值notification channel
,但是默认值尚未在代码中创建notification channel id