- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用这段代码,它在本地服务器上运行良好,但在 BlueMix 服务器上运行不正常
public void pushNotification(String notificationTitle, String notificationBody, String token, String notificationType, int applePort) {
HTTP2Client lowLevelClient = null;
HttpClient client = null;
String hostname = null;
try {
lowLevelClient = new HTTP2Client(); // create a low-level Jetty HTTP/2 client
lowLevelClient.start();
// APNs requires the use of HPACK (header compression for HTTP/2), which prevents repeated header keys and values.
KeyStore ks = KeyStore.getInstance("PKCS12");
// Ensure that the password is the same as the one used later in setKeyStorePassword()
ks.load(AppleServiceResource.class.getClassLoader().getResourceAsStream("/resources/appleCertificate/apns_all.p12"), "a1B23".toCharArray());
SslContextFactory ssl = new SslContextFactory(true);
ssl.setKeyStore(ks);
ssl.setKeyStorePassword("a5B93");
FuturePromise<Session> sessionPromise = new FuturePromise<>();
if (notificationType.trim().equalsIgnoreCase("Development"))
hostname = "api.development.push.apple.com";
else if (notificationType.trim().equalsIgnoreCase("Producation"))
hostname = "api.push.apple.com";
lowLevelClient.connect(ssl, new InetSocketAddress(hostname, applePort), new ServerSessionListener.Adapter(), sessionPromise);
// create a high-level Jetty client
client = new HttpClient(new HttpClientTransportOverHTTP2(lowLevelClient), ssl);
client.start();
String payload = "{\"aps\":{\"alert\":{\"title\":\"" + notificationTitle + "\",\"body\":\"" + notificationBody + "\"}, \"sound\":\"default\"}}";
Request request = client.POST("https://" + hostname).timeout(20, TimeUnit.SECONDS).path("/3/device/" + token).content(new StringContentProvider(payload, Charset.forName("UTF-8")));
request = request.header("apns-topic", "Skios.TripBruCACT").header("User-Agent", client.getClass().getName() + "/" + Jetty.VERSION);
logger.info("Sending notification to token: " + token );
ContentResponse response = request.send();
logger.info("Response Status: " + response.getStatus());
logger.info("Sending notification to token: " + token + " is Done.");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (lowLevelClient != null && !lowLevelClient.isStopped())
lowLevelClient.stop();
if (client != null && !client.isStopped())
client.stop();
} catch (Exception e) {
e.printStackTrace();
}
}
}
当我在 BlueMix 服务器上使用相同的代码时它抛出
org.eclipse.jetty.io.RuntimeIOException: javax.net.ssl.SSLHandshakeException: No negotiable cipher suite
和
javax.net.ssl.SSLHandshakeException: No negotiable cipher suite
最佳答案
根据与 Liberty for Java 团队的讨论,我们认为您使用的是 JDK 的低版本。当前级别的 buildpack 现在提供 JRE 8.0:SR3 FP11。尝试使用最新的构建包,以便您可以获取新的 JRE 级别。
关于ssl - javax.net.ssl.SSLHandshakeException : No negotiable cipher suite when calling Apple APNS using HTTP2 implemented by jetty library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39623310/
我是一名 iOS 开发人员,有人问我什么类型(整个,即 header 和正文)的请求来点击 APN 以获取设备通知。 我读了很多关于 APN 服务器设置的教程,但我无法理解,因为我对 PhP 和 No
当我靠近 iBeacon 时,我需要得到提醒,为此我正在使用第三方 iBeacon 管理服务,即 https://admin.lighthousebeacon.io/applications/5411
缺少推送通知授权 - 您的应用似乎注册了 Apple 推送通知服务,但应用签名的授权不包括“aps-environment”授权。如果您的应用程序使用 Apple 推送通知服务,请确保您的应用程序 I
考虑这种情况: 应用程序当前不在前台,但在后台处于未挂起状态(appDidEnterbackground:已调用) 设备收到应用程序的 3 个 APN,用户将警报样式设置为“警报” 用户单击最顶部(第
这个问题在这里已经有了答案: Remote notification method called twice (2 个答案) 关闭 7 年前。
我想在 iphone 应用程序中使用简单的 apns,但我不知道是否可以将 apns 与 forge 一起使用(不要使用 Parse 服务),我找不到任何 API,在 phoneGap 中,我可以编辑
我支持一个移动应用程序。最近我收到一封电子邮件,“apns 生产证书即将到期”。之后我检查了我的后端,发现没有使用任何证书,只有身份验证 key 。据我所知,身份验证 key 没有到期 key 。我想
作为一名 iOS 开发者。我知道在我们的项目中以编程方式实现 APN。但是,我假设我们正在从 APN 服务器接收 APN 消息。我不知道 我们如何托管 APN 消息? 如何为我们创建真正的 APN 服
我的应用通过 APNS 发送和接收消息。但如果客户端的通知被触发,则客户端不会收到其他客户端通过 APNS 发送的消息。 这是错误的方式吗?如果不是,当客户端的通知触发时,客户端如何接收消息? 最佳答
我已经从这个 Apns code 为 php 和 objective-c 完成了 apns 代码 并从 this link 设置证书 用于向 iOS 设备发送通知的沙盒和生产 apns 在我的服务器上
从沙箱模式到生产模式,设备 token 有何不同? 我认为我已将一些设备 token 锁定为生产模式,并且无法将它们从开发中插入。 关于如何检查有什么想法吗? 最佳答案 当您使用开发证书构建应用程序时
我有一个 FCM 项目成功向 iOS 和 Android 用户发送推送通知。新 iOS 用户订阅并检索 FCM token 。 但是,我也有许多使用旧 iOS 应用程序并直接订阅 APNS 的用户,我
我真的很难弄清楚如何将消息从我的服务器发送到 APNS。我使用过 Moon-APNS 和 APNS-Sharp,但我遇到了同样的错误,即“参数不正确”。我使用 KeyChain 生成了 p12 文件。
Apple 最近向 APNS 添加了一种新的身份验证方法 ( Apple Push Notification Authentication Key (Sandbox & Production) )。
我正在将 Firebase Messaging 用于 iOS 和 Android 推送通知。 我正在使用新的“APNs 身份验证 key ”机制,而不是“APN 证书” 我收到 Apple 发来的一封
我正在开发一个处理推送通知的 iOS 应用程序。我们的推送通知服务器是用 ColdFusion 编写的,并使用 com.notnoop.apns.SimpleApnsNotification 发送通知
根据 Apple's APNs docs ,从 iOS 13 开始,http api 的客户端 必须 发送 apns-push-type 和 apns-priority 的 header 字段,否则请
我们可以在 Blackberry 中获取 APN 名称,但我是否知道有什么方法可以在应用程序中设置 APN。请帮我解决这个问题? 提前致谢 最佳答案 你当然可以。但我想您知道 apn 仅适用于直接连接
我在一些 stackOverflow 帖子中读到,主机需要打开端口 2195 并支持 apns 下的推送通知。如何让我的服务器支持 apns。 推送通知指南中这一行的含义是什么 要建立可信的提供商身份
在应用程序被批准进入应用程序商店之前,生产 APNS 是否不可用?我可以很好地使用沙箱证书,但生产没有产生任何结果。 最佳答案 如果您使用分发配置文件构建应用程序(与临时构建一样),则可以使用生产推送
我是一名优秀的程序员,十分优秀!