【问题标题】:Failed in APNS Tester Push notificationsAPNS 测试人员推送通知失败
【发布时间】:2017-02-20 07:23:51
【问题描述】:

02-20 07:10:53 +0000: 连接到服务器 gateway.sandbox.push.apple.com

2017-02-20 07:10:53 +0000:设置 SSL 连接

2017-02-20 07:10:53 +0000:设置对等域名gateway.sandbox.push.apple.com

2017-02-20 07:10:53 +0000:钥匙串打开

2017-02-20 07:10:53 +0000:Apple 开发 IOS 推送服务的证书数据:MyApp 初始化成功

2017-02-20 07:10:53 +0000:创建 sec 身份失败,错误代码 -25300

2017-02-20 07:10:53 +0000:创建客户端证书失败,错误代码-50

2017-02-20 07:10:53 +0000:向 gateway.sandbox.push.apple.com:2195 发送数据失败,错误:-9806,错误代码 -9806

2017-02-20 07:10:53 +0000:与服务器断开连接`gateway.sandbox.push.apple.com:2195

此错误出现在 APNS 测试仪中。谁能告诉我这个问题?

【问题讨论】:

标签: ios iphone apple-push-notifications


【解决方案1】:

您提供的信息很难准确诊断。 但是请检查一下。

  1. 检查 APNS 发送服务器代码。

如果您使用 PHP,您可以使用此示例:

<?php
// My device token here (without spaces):
$deviceToken = 'Token ID';

// My private key's passphrase here:
$passphrase = 'Password';

// My alert message here:
$message = 'Hello!';

//badge
$badge = 1;

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

if (!$fp) {
    exit("Failed to connect: $err $errstr" . PHP_EOL);
}
echo 'Connected to APNS' . PHP_EOL;

 // Create the payload body
$body['aps'] = array(
    'alert' => $message,
    'badge' => $badge,
    'sound' => 'newMessage.wav'
);

// Encode the payload as JSON
$payload = json_encode($body);

// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload))  . $payload;

// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));

if (!$result) {
    echo 'Error, notification not sent' . PHP_EOL;
}else{
    echo 'notification sent!' . PHP_EOL;
}

// Close the connection to the server
fclose($fp);
?>

如果您使用 JSP,请使用此示例:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="javapns.back.PushNotificationManager" %>
<%@ page import="javapns.back.SSLConnectionHelper" %>
<%@ page import="javapns.data.Device" %>
<%@ page import="javapns.data.PayLoad" %>
<%@ page import="java.lang.Object" %>
<%@ page import="org.apache.commons.lang.StringUtils" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Push Notification</title>
</head>
<body>
<%
    System.out.println("Start~!!!");

    String deviceToken = "Token ID";
    PayLoad payLoad = new PayLoad();
    payLoad.addAlert("Hello!");    // Message
    payLoad.addBadge(1);
    payLoad.addSound("default");
    PushNotificationManager pushManager = PushNotificationManager.getInstance();
    pushManager.addDevice("iPhone", deviceToken);

    //Connect to APNs
    //String host = "gateway.push.apple.com";  // To Appstore
    String host = "gateway.sandbox.push.apple.com";  // To Development
    int port = 2195;
    String certificatePath = "/Users/nzeen.com/Documents/apns/apns.p12";  // Push Notification Certificate
    String certificatePassword = "Password"; // Password
    pushManager.initializeConnection(host, port, certificatePath, certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);

    //Send Push
    Device client = pushManager.getDevice("iPhone");
    pushManager.sendNotification(client, payLoad);
    pushManager.stopConnection();
    pushManager.removeDevice("iPhone");
%>

please wait…!
</body>
</html>
  1. 检查您正在使用的证书。 您应该为每个环境使用证书。 由于所使用的证书因 APNS 的服务器类型而异, 您应该为每个环境使用证书。

    “gateway.push.apple.com:2195” 或者 “gateway.sandbox.push.apple.com:2195”

  2. 识别被测网络。 您可以在控制台通过以下命令检查连接是否正常。

    "[主机名/]$ Telnet gateway.sandbox.push.apple.com 2195"

    或者

    "[主机名/]$ Telnet gateway.sandbox.push.apple.com 2195"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 2015-04-21
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    相关资源
    最近更新 更多