【问题标题】:Test FCM notification on iOS Simulator在 iOS 模拟器上测试 FCM 通知
【发布时间】:2020-09-17 16:51:18
【问题描述】:

从 Xcode 11 开始,iOS 模拟器现在可以接收推送通知。这可以通过执行特定命令或向模拟器提供 JSON 文件来完成。我从这个博客获得了这些信息:Test Notification on Simulator

但是,在我的用例中,我使用 Firebase Cloud Messaging 向我的应用(Android 和 iOS)的用户发送通知。我无法在模拟器上测试 Firebase 生成的通知,因为 FCM 的有效负载不同。

有没有办法做到这一点?
我在该主题上找到了similar question,但到目前为止还没有答案。

【问题讨论】:

    标签: ios firebase push-notification firebase-cloud-messaging ios-simulator


    【解决方案1】:

    为了在模拟器中测试推送通知,只需创建一个新文件并粘贴以下 json 对象并将文件保存在 .apns 中,然后只需将此文件拖放到模拟器中即可推送。

    {
        "aps" : {
            "alert" : {
                "title" : "sarunw.com",
                "body" : "A asdfsadfsadf"
            },
            "badge" : 5
        },
        "Simulator Target Bundle": "bundleId"
    }
    

    对于不同的有效负载,只需在 Postman 中使用以下 JSON 对象

    {
     "to" : "ewebWDSSwYc:APA91bGOARO4eq9LlOfgfXPQZMK3IiRFanhzSSgkD6cVqJiPbnyuEgsvQMarDEl6Hg7_UMtFM6Hn90jyTsSENNqLNNLVjLSypR0voAO3j6orIsgabX-t0cpfJ0qpB2SzhZiXvor0r__d",
     "notification":
     {
        "title":"ABC",
        "body":"123",
        "mutable_content" : true,
        "category":"CustomSamplePush"
     },
     
     "data":
        {
            "sender_contact_code" : "+92",
         "sender_contact" : "(555) 564-8583",
         "group_name":"Testing Group",
         "type":"NewMessage",
         "type_id":"1213",
         "notification_type_id":"123213"
        }
    }
    

    使用此网址 -> https://fcm.googleapis.com/fcm/send (类型将是 POST)并且在授权时您需要将 Server 密钥放入 Key Value 中,这样您就可以使用自己的格式化对象发送推送通知。

    您也可以使用 Pusher 来测试推送通知,我已经上传了截图供参考。

    【讨论】:

    • 您的第一种方法会在模拟器上生成通知,但我无法传递任何数据,而且 AppDelegate.swift 中没有调用任何通知方法。第二种方法可用于发送 FCM 通知,但不适用于模拟器。 它仅适用于物理 iOS 设备。
    • 是的,你是对的,但我认为你需要将自定义数据键放入 { "aps" : { "alert" : { "title" : "sarunw.com", "body" : "A asdfsadfsadf" }, "badge" : 5 }, "Simulator Target Bundle": "bundleId", data: {} } 然后当你点击通知时它会调用 usernotification Delegate 方法
    【解决方案2】:

    从 Xcode 12(不是 11)开始,注册者可以通过 APNS 有效负载推送和接收。如果拖放不起作用,您可以使用终端:

    xcrun simctl push booted YOUR_BUNDLE payload.json
    

    与:

    • "booted" = 当前模拟器
    • "payload.json" = APNS 文件 你的 Mac。

    它可能看起来像:

    {
        "Simulator Target Bundle": "xxx.xxx.xx ",
        "aps":{
                        "alert":{
                            "title":"XXX",
                            "body":"YYY YYYY"
                        },
                        "badge" : 5,
                        "data":{
                            // stuff
                        },
                        "mutable-content":1
                    }
    }
     
    

    【讨论】:

      猜你喜欢
      • 2020-10-03
      • 2021-04-03
      • 1970-01-01
      • 2020-09-03
      • 2020-07-08
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 2014-12-26
      相关资源
      最近更新 更多