phonegap build:在iOS 9.1推送通知中没有获得注册ID

时间:2015-11-16 14:24:49

标签: push-notification phonegap-plugins phonegap-build

我正在尝试使用最新的pushnotification插件构建一个简单的应用程序。我正在使用Phonegap构建。但我无法在iOS 9.1上获得注册ID,但它正在iOS8上运行。检查以下代码

var push = PushNotification.init({
            "android": {
                "senderID": "12345679"
            },"ios":  {
                "alert": "true", "badge": "true", "sound": "true"
             }, "windows": {  }
          });


        push.on('registration', function(data) {
            alert("got registration id");
            console.log(JSON.stringify(data));
            localStorage.setItem("deviceToken", data.registrationId);
          });

        push.on('notification', function(data) {
            // data.message,
            // data.title,
            // data.count,
            // data.sound,
            // data.image,
            // data.additionalData
          });

        push.on('error', function(e) {
            // e.message
            alert(e.message);
        });

Config.xml

  <gap:plugin name="phonegap-plugin-push" source="npm" version="1.4.2" />
  <preference name="phonegap-version" value="cli-5.2.0" />
  <preference name="android-build-tool" value="gradle"/>

1 个答案:

答案 0 :(得分:1)

我找到了这个问题的解决方案, 实际上这不是确定的事情,但它是多个因素的组合

对于客户端,请确保使用找到here的最新版本的推送插件,即1.4.2(到现在为止)

这是客户端代码的示例

var push = PushNotification.init({ "android": {"senderID": "12345679"},
     "ios": {"alert": "true", "badge": "true", "sound": "true"}, "windows": {} } );

push.on('registration', function(data) {
    // data.registrationId
});

push.on('notification', function(data) {
    // data.message,
    // data.title,
    // data.count,
    // data.sound,
    // data.image,
    // data.additionalData
});

push.on('error', function(e) {
    // e.message
});

对于服务器端和Xcode项目:

1-一定要使用Xcode 7.1.1(到目前为止最新的稳定版本)

2-确保创建APNS Production NOT DEVELOPMENT证书然后下载

enter image description here

3-拖动它或用钥匙串访问它打开它展开它并导出私钥作为yourAppNameKey.p12

enter image description here

然后我们需要为证书生成pem文件,所以通过终端写:

 openssl x509 -in aps_production.cer -inform der -out yourAppNameCert.pem

注意:在最后一步中,我们使用了我们在步骤2中下载的证书

5-现在我们将私钥的.p12文件转换为.pem文件:

openssl pkcs12 -nocerts -out yourAppNameKey.pem -in yourAppNameKey.p12 

注意:系统会要求您输入用于导出私钥的密码并插入密码并确认其在服务器端代码中使用

6 - 最后,我们将证书和密钥合并到一个.pem文件中:

cat PushChatCert.pem PushChatKey.pem > ck.pem

here is a sample of the server side code

希望它适用于所有人..谢谢