gpt4 book ai didi

android - Parse.com 推送通知无法始终如一地工作,收到 "GCM -MISMATCH SENDER ID"错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:43:27 26 4
gpt4 key购买 nike

来自 parse.com 的推送通知并不总是有效。随机推送通知将失败,导致 GCM - MISMATCH SENDER ID”错误。据我了解,我们不必以编程方式对 GCM 做任何事情,因为 parse.com 将 objectId 发送到 GCM。无论哪种情况,我都没有能够查明为什么有时会发生此错误而有时不会发生此错误的任何具体原因。此外,我使用的是 Parse 版本 1.10.2。

我的应用程序类有以下内容

Parse.initialize(this, APPLICATION_ID_DEBUG, CLIENT_KEY_DEBUG);
Parse.setLogLevel(Parse.LOG_LEVEL_VERBOSE);
ParsePush.subscribeInBackground(Constants.CHANNEL, new SaveCallback() {
@Override
public void done(ParseException e) {
if (Utils.checkIfNull(e)) {
// subscribed to channel
} else {
// failed to subscribe to channel
}
}
});

在用户登录到我的应用后,我会为他们附加一个 channel 。我保存的 channel 数据只是我从服务器获取的用户的唯一 ID。

        List<String> arryChannel = new ArrayList<>();
arryChannel.add(uniqueUserId);

final ParseInstallation parseInstallation = ParseInstallation.getCurrentInstallation();
parseInstallation.put(Constants.CHANNEL, arryChannel);
parseInstallation.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (Utils.checkIfNull(e)) {
// update channel with user's unique id
} else {
// failed to update channel with user unique id
}
}
});

最后,当用户注销时,我会取消订阅他们的 channel 。我添加了取消订阅以尝试阻止任何一台设备接收多个推送通知,因为它们以多个用户身份登录到应用程序并订阅了多个 channel 。以下是您注销时我的代码的外观。

                    ParsePush.unsubscribeInBackground(Constants.CHANNEL, new SaveCallback() {
@Override
public void done(ParseException e) {
if (Utils.checkIfNull(e)) {
// successfully unsubscribed to channel

// save the updated (unsubscribed) parse installation
final ParseInstallation parseInstallation = ParseInstallation.getCurrentInstallation();
parseInstallation.put(Constants.CHANNEL, new ArrayList<String>());
parseInstallation.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (Utils.checkIfNull(e)) {
// add whatever logs here to check for any issues with unsubscribing
} else {
// failed to update channel
}
}
});
} else {
Logger.e("PARSE", "failed to unsubscribed to channel: " + e.getMessage());
}
}
});

这个实现的结果是,当推送通知不起作用时,它会继续失败大约 50-100 次。然后它将开始工作约 150-200 次。然后它又回到不工作。这不是工作,非工作类型来回。它更多的是失败,失败,失败多次,然后是成功,成功,多次成功。感谢任何有关我在实现过程中遗漏的帮助。提前致谢。

最佳答案

我终于找到了这个问题的答案!这个问题与我的实现无关。对于遇到同样冲突的任何其他人,请寻找也使用推送通知的任何其他第 3 方服务。对我来说,Mixpanel 是罪魁祸首。当我从我的代码库中删除 mixpanel.initPushHandling() 时,一切都开始工作了。这是有道理的,因为当您为 mixpanel 初始化推送通知时,您传入了一个用于 GCMSenderID 的值。解析推送通知的工作方式不同。使用 parse.com,您不必发送 GCMSenderID,因为 parse 会自动发送 objectId 来执行它们的推送通知。在两者之间,这会导致 GCM-MISMATCH-SENDER 错误。

所以解决方案是,删除任何可能与 parse.com 冲突的服务。并随意使用我的实现,这很好。干杯!

关于android - Parse.com 推送通知无法始终如一地工作,收到 "GCM -MISMATCH SENDER ID"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32661395/

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