美文网首页
apns推送测试(node 实现 + 推送测试小工具)

apns推送测试(node 实现 + 推送测试小工具)

作者: XPorter | 来源:发表于2016-08-13 14:45 被阅读284次

    1、打开钥匙串找到推送证书
    2、到处证书为cert.cer
    3、导出私钥为key.p12
    4、转换格式

    $ openssl
    OpenSSL> x509 -in cert.cer -inform DER -outform PEM -out cert.pem
    OpenSSL> pkcs12 -in key.p12 -out key.pem -nodes
    

    5、创建node工程文件夹,安装apn

    npm install apn
    

    6、创建推送实现文件apn.js

    var apn = require('apn');
    /*
    token 可以在
    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
    这个方法里获取,直接打印出 deviceToken 的值就可以了,然后处理一下删除两端的尖括号和中间的空格
    */
    var token = "9445ab6c046188daf9d421792f969f4963c59b267162816bcd1ac2828582baa6";
    
    
    /*
     gateway.sandbox.push.apple.com 为apns开发环境的服务器地址
     发布环境的地址是 gateway.push.apple.com
     这个根据需要来选择,同时证书要对应。
     建议在开发环境下测试,不然万一推送错了就麻烦了
    */
    var options = { "gateway": "gateway.sandbox.push.apple.com","cert": "cert.pem",
    "key": "key.pem","production":false },
        
    apnConnection = new apn.Connection(options),   
    device = new apn.Device(token),
    note = new apn.Notification();
    
    
    note.expiry = Math.floor(Date.now() / 1000) + 60;
    note.badge = 1;
    note.sound = "defined";
    note.alert = "happy every day";
    //自定义参数
    note.payload = {'messageFrom': 'Caroline'};
    note.device = device;
    apnConnection.pushNotification(note, device);
    //以下是监听信息
    apnConnection.on('connected',function() {
    console.log("Connected");
    });
    apnConnection.on('transmitted',function(notification, device) {
    console.log("Notificationtransmitted to:" + device.token.toString('hex'));
    });
    apnConnection.on('transmissionError',function(errCode, notification, device) {
    console.error("Notificationcaused error: " + errCode + " for device ", device,notification);
    });
    apnConnection.on('timeout',function () {
    console.log("ConnectionTimeout");
    });
    apnConnection.on('disconnected',function() {
    console.log("Disconnectedfrom APNS");
    });
    apnConnection.on('socketError',console.error);
    
    

    做的时候碰到了 如下错误

    Notificationcaused error: 8 for device
    

    未找到对应的设备
    1、检查token是否正确,
    2、项目bundle identifier 与证书是否对应


    推送工具

    基于SmartPush,写了个iOS版的推送工具

    1. 添加设备token更加方便,直接通过scheme的方式添加。
    2. 添加证书,p12文件的base64编码

    相关文章

      网友评论

          本文标题:apns推送测试(node 实现 + 推送测试小工具)

          本文链接:https://www.haomeiwen.com/subject/svhjsttx.html