【问题标题】:expo sendPushNotificationsAsync fails silentlyexpo sendPushNotificationsAsync 静默失败
【发布时间】:2022-07-26 04:10:58
【问题描述】:

在调用sendPushNotificationsAsync 之后,我希望票会被退回。相反,我没有收到任何退票。

调用以下函数:(注意 console.log(ticketChunk); 不返回任何内容)。为什么我在此函数中没有收到任何票证并且没有触发任何错误?

const sendNotitifications = (messages) => {
    let chunks = expo.chunkPushNotifications(messages);
    let tickets = [];

    console.log("chunks: ",chunks);

    (async () => {
        for (let chunk of chunks) {
            try {
                let ticketChunk = await expo.sendPushNotificationsAsync(chunk);
                console.log(ticketChunk);  // <-- returns nothing
                tickets.push(...ticketChunk);
            } catch (err) {
                console.log(err);
            }
        }
    })();

    console.log("tickets: ",tickets);

    let stackTickets = [];
    for (let [i, ticketChunk] of tickets.entries()) {
        let chunk = chunks[i]
        ticketChunk.forEach((ticket, i) => {
            stackTickets.push({
                stack: chunk[i].data[StackID],
                ticket: ticket
            });
        });
    };

    console.log("stackTickets: ",stackTickets);

    return stackTickets;
};

产生以下结果:

chunks:  [
  [
    {
      to: 'ExponentPushToken[XXXXXXXXXXXXXXXXXXX]',
      sound: 'default',
      body: 'Time for Cheese!',
      data: [Object]
    },
    {
      to: 'ExponentPushToken[XXXXXXXXXXXXXXXXXXX]',
      sound: 'default',
      body: 'Time for Stackeroni!',
      data: [Object]
    }
  ]
]
tickets:  []
stackTickets:  []

【问题讨论】:

    标签: javascript push-notification expo


    【解决方案1】:

    虽然听起来很奇怪,但请删除包装 for 循环的匿名函数。

    这样做:

        for (let chunk of chunks) {
            try {
                let ticketChunk = await expo.sendPushNotificationsAsync(chunk);
                console.log(ticketChunk);
                tickets.push(...ticketChunk);
            } catch (err) {
                console.log(err);
            }
        }
    

    代替:

    (async () => {
        for (let chunk of chunks) {
            try {
                let ticketChunk = await expo.sendPushNotificationsAsync(chunk);
                console.log(ticketChunk);  // <-- returns nothing
                tickets.push(...ticketChunk);
            } catch (err) {
                console.log(err);
            }
        }
    })();
    

    这应该像一个魅力!

    【讨论】:

      猜你喜欢
      • 2017-01-10
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 2017-10-08
      相关资源
      最近更新 更多