如何通过Python FCM向iOS发送带发送者头像的通信通知?
如何通过FCM在iOS通知中显示发送者图片而非应用图标
可以实现,但你当前在data字段传icon的写法无法达到需求。iOS的通知系统(APNs,FCM最终会转发请求到APNs)需要特定配置才能替换通知上的应用图标为发送者图片,具体分两种实现方式:
方式一:通过Notification Service Extension自定义通知内容
这是最通用的方案,适用于所有类型的通知:
- FCM消息构造:需同时包含
notification和data字段,开启mutable_content让iOS允许修改通知内容,在data中传递发送者图片的URL:
message = messaging.Message( notification=messaging.Notification( title='Hello', body='This is a test notification', mutable_content=True # 关键:开启可变内容,触发Extension ), data={ 'type': '0', 'sender_image_url': f"{sender_image_notification}" # 传递发送者图片地址 }, token=f'{user_token}' )
- iOS端配置:
- 创建一个
Notification Service Extension目标 - 在Extension的
didReceiveNotificationRequest:withContentHandler:方法中,从request.content.userInfo取出sender_image_url,下载图片文件 - 创建
UNNotificationAttachment对象,将其添加到通知内容的attachments数组中 - 注意:图片必须是iOS支持的格式(JPG/PNG),且文件大小不超过10MB,否则无法显示
- 创建一个
方式二:利用iOS通信通知(Messages-style)的联系人标识
如果你的通知属于通信类(比如聊天消息),可以利用iOS的通信通知框架:
- FCM端:在
data中传递发送者的唯一标识(比如用户ID) - iOS端:
- 提前将发送者的信息(包含图片)注册到
CNContactStore中 - 在Notification Service Extension中,根据FCM传递的标识匹配联系人,将通知内容的
person字段设置为对应的CNContact对象 - 这样iOS会自动显示联系人的图片作为通知图标
- 提前将发送者的信息(包含图片)注册到
注意事项
- 直接在FCM的
notification字段中使用image参数,只会在通知下方显示大图片,不会替换应用图标位置的图像 - 图片URL必须是公网可访问的,且iOS设备能正常下载(注意HTTPS协议、跨域等问题)
内容的提问来源于stack exchange,提问作者prg.dev
相关产品推荐
相关产品推荐

