保存在 Firebase 中的购物车 - 订单处理

Shopping cart saved in firebase - order processing

我的下一个问题是关于 Firebase 的。 我有一个关于汽车备件的申请。在应用程序中,通过电子邮件和密码授权的用户将备件添加到他的购物车中,该购物车存储在 Firebase 中。

问题:如何通过点击“提交订单”按钮,将购物车中的物品邮寄给卖家(我)?

也许 Firebase 已经有针对类似任务的现成解决方案/服务?

Apple 的政策是否允许您将在注册期间提供的用户电子邮件地址连同请求一起发送给订单反馈?

这里我尝试通过 MFMailComposeViewController 发送订单

@IBAction func sendRequestButtonTapped(_ sender: UIButton) {

// Modify following variables with your text / recipient
let recipientEmail = "MyMail@gmail.com"
let subject = "description"
var body = "some array with ordered spare parts"
for i in objectsList {
    body.append(i.objectFromPartsCatalogueListCode! + " " +  i.objectFromPartsCatalogueListName!+"\n")
}
// Show default mail composer
if MFMailComposeViewController.canSendMail() {
    let mail = MFMailComposeViewController()
    mail.mailComposeDelegate = self //!!!
    mail.delegate = self //!!!
    mail.setToRecipients([recipientEmail])
    mail.setSubject(subject)
    mail.setMessageBody(body, isHTML: false)
    mail.modalPresentationStyle = .fullScreen
    self.present(mail, animated: true)
    
    // Show third party email composer if default Mail app is not present
} else if let emailUrl = SendEmailManager.createEmailUrl(to: recipientEmail, subject: subject, body: body) {
    UIApplication.shared.open(emailUrl)
}

这很困难,需要打开一个额外的菜单来选择发送方式。我想在我的邮件中收到包含应用程序内容的订单,用户只需单击“发送请求”按钮即可。

您可以通过安全的后端环境(例如云​​功能)从您的应用轻松发送电子邮件。

有许多可能的解决方案,但这里是其中之一:

当用户点击提交时,您可以在特殊的 Firestore 集合(例如电子邮件)中创建一个新文档,并让云函数使用后台触发器监听该集合中的更改 Firestore event triggers。此函数将获取文档更改、检索其数据(电子邮件信息和您指定的任何其他元数据),并使用您决定使用的任何电子邮件 API 发送电子邮件(例如 SendGrid)。

或者,您可以使用 Firebase 电子邮件扩展 Extension,但编写您自己的函数并不困难。

另一个好处是您可以将您的个人电子邮件存储在安全的后端环境中,这样您的用户将无法在他们的设备上访问它。