gpt4 book ai didi

swift - 使用 OneSignal/Firebase 从 iOS 设备发送推送通知

转载 作者:可可西里 更新时间:2023-10-31 23:56:17 39 4
gpt4 key购买 nike

我正在开发一个应用程序,并试图弄清楚如何在不同用户执行特定操作时通知特定用户。我尽量避免设置自己的后端服务器,因为我相信我想做的事情可以通过 OneSignal/Firebase 完成。

我还没有尝试过,但我想每个用户都可以获得他们自己的 OneSignal player_id(基本上就是 OneSignal device_id),将其上传到我的 firebase 数据库,然后当我想发送推送通知时我只需从 firebase 中提取用户的 player_id,然后使用它通过 OneSignals send to specific device 创建通知,其中使用 player_ids 不需要 API 授权 key 。

虽然在查看文档后我不确定用户如何找到(以便他们可以上传到 firebase)他们的 player_id,所以如果有人能指出我的方向,我将不胜感激。

阅读其他问题,这似乎可行。我只是想看看这种方法是否存在任何类似的潜在问题,或者是否有更安全或更简单的方法来解决这个问题。

最佳答案

是的,这是可能的,您需要做的是:

  • 为 API key 创建 OneSignal 和 Firebase 帐户

  • 添加一个信号(只是一个例子)

    OneSignal.initWithLaunchOptions(launchOptions, appId: "your app id", handleNotificationReceived: { (notification) in

    }, handleNotificationAction: { (result) in
    let payload: OSNotificationPayload? = result?.notification.payload
    print(payload ?? "")

    }, settings: [kOSSettingsKeyAutoPrompt : false, kOSSettingsKeyInFocusDisplayOption: OSNotificationDisplayType.notification.rawValue])
  • 将推送 token /playerId 保存到 firebase(例如在 users.id.onesignal 中)

    OneSignal.promptForPushNotifications(userResponse: nil)
    OneSignal.idsAvailable({(_ userId, _ pushToken) in
    print("UserId:\(userId!)")
    if let pushToken = pushToken {
    print("pushToken:\(pushToken)")
    FIRDatabase.database().reference().child("users").child(User.sharedInstance.uid).child("onesignal").setValue([userId!: pushToken])

    }
    })
  • 当您为每个用户都有一个 pushToken 时,您可以向该玩家 ID 发送通知

    FIRDatabase.database().reference().child("users").child(friendId).child("onesignal").observeSingleEvent(of: .value, with: {snapshot in
    if snapshot.exists() {

    for (playerId, _) in snapshot.value as! Dictionary<String, String> {

    OneSignal.postNotification(["headings": ["en": title], "contents": ["en": message], "include_player_ids": [playerId]])
    }
    }
    })

这不是完整的实现方式和实现方式,但它会为您提供我认为的正确方式。

关于swift - 使用 OneSignal/Firebase 从 iOS 设备发送推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44246237/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com