使用..p8证书和apn

时间:2018-10-29 14:23:20

标签: ios apple-push-notifications push testflight apn

我正在尝试向我的ios应用发送推送通知。它们对于我通过App Store下载的应用程序运行良好,但是当我使用Testflight安装Beta版时,它们不起作用。这种目的无法实现,因为我想测试新型的通知并在应用程序上做正确的事。

我认为我正在做所有正确的事情:

  1. 注册有关该应用的通知并获取设备令牌
  2. 将设备令牌发送到我的服务器
  3. 使用节点中的APNS将通知发送到设备。

问题是,当我从服务器发送通知到从Testflight下载的应用程序时,出现BadDeviceToken错误。在App Store中,效果很好。

Node中的代码如下:

let util = require('util');
let apn = require('apn');

class PushNotification {
    constructor(production) {
        production = !!production;
        this.apnProvider = new apn.Provider({
            token: {
                key: './apns.p8', // Path to the key p8 file
                keyId: 'xxxxxxxxx', // The Key ID of the p8 file (available at https://developer.apple.com/account/ios/certificate/key)
                teamId: 'YYYYYYYY' // The Team ID of your Apple Developer Account (available at https://developer.apple.com/account/#/membership/)
            },
            production: production // Set to true if sending a notification to a production iOS app
        });
        if (production) {
            process.env.NODE_ENV = "production";
        }
    }

    sendNotificationApple(deviceToken, alert, payload, badge) {
        if (deviceToken && (alert || badge)) {
            let note = new apn.Notification();
            note.topic = 'com.xxx.xxx';
            note.expiry = Math.floor(Date.now() / 1000) + 3600 * 24 * 2; // Expires 2 days from now
            if (badge != undefined && badge != -1) {
                note.badge = badge;
            }
            note.alert = alert; 
            if (payload) {
                note.payload = payload;
            }
            this.apnProvider.send(note, deviceToken).then(function (result) {
                console.log(util.inspect(result, false, null));
            });
        }
    }
}
    

0 个答案:

没有答案