gpt4 book ai didi

iOS 推送通知 - JavaPNS - keystore.p12 文件安全

转载 作者:行者123 更新时间:2023-11-28 22:51:17 26 4
gpt4 key购买 nike

我正在尝试使用 Apple 的推送通知。我在这里使用本教程: http://www.ibm.com/developerworks/java/library/mo-ios-push/#ibm-pcon

我正在尝试创建推送通知。示例代码在这里: http://code.google.com/p/javapns/wiki/PushNotificationBasic看起来像这样:

import javapns.Push;

public class PushTest {

public static void main(String[] args) {

Push.alert("Hello World!", "keystore.p12", "keystore_password", false, "Your token");


}
}

除了 keystore.p12 部分,我已经设置了所有内容。以下是文档中关于 keystore 的内容:

对象 keystore :对 keystore 文件或实际 keystore 内容的引用。有关如何创建 keystore 的更多信息,请参阅准备证书。您可以将以下对象传递给此参数:

  • java.io.File:指向您的 keystore 文件的直接指针
  • java.lang.String:本地 keystore 文件的路径
  • java.io.InputStream:提供来自 keystore 的字节的流
  • byte[]:keystore的实际字节数
  • java.security.KeyStore:一个实际加载的 keystore

我不想简单地在我的计算机上输入 keystore 的路径(就像他们在这里做的 Getting error while sending Push Notification to iPhone using Java-PNS? ),因为我觉得那是不安全的。

我应该使用哪些对象?我倾向于使用 java.security.KeyStore。

最后一点,此代码需要托管在 Amazon Web Service 的 Elastic Beanstalk 上(如果重要的话)。

--------编辑 1------------

我尝试输入 Richard J. Ross III 的代码。但在可以了解我的 .p12 文件设置是否正确之前,我首先需要解决有关 JavaPNS(以及我认为的文件结构)的问题。运行下面的代码会给我这个错误:HTTP Status 404 - Servlet IosSendGameServlet is not available。当我注释掉所有 JavaPNS 语句时,出现此错误:HTTP Status 500 - javax.servlet.ServletException: Parameter recievingAppleDeviceID not found.(因为我没有输入参数)这导致我相信访问 JavaPNS 的方式存在问题。也许它在我的文件结构中的位置错误?它与 servlet-api 位于同一位置(在 lib 中)。也许这是我上传到 AWS Elastic Beanstalk 服务器的方式的问题?

package com.google.android.gcm.demo.server;

import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import javapns.Push; //<--gets commented out to receive 500 error
import javapns.communication.exceptions.CommunicationException;//<--gets commented out to receive 500 error
import javapns.communication.exceptions.KeystoreException;//<--gets commented out to receive 500 error

public class IosSendGameServlet extends BaseServlet {

@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException,
ServletException {
String recievingAppleDeviceId = getParameter(req,
"recievingAppleDeviceID");
String sendingUser = getParameter(req, "sendingUser");
InputStream keyStore = this.getClass().getResourceAsStream("/sasSandbox.p12");

//everything below here gets commented out to receive 500 error
try {
Push.alert("Game with " + sendingUser + ": It's your turn!", keyStore, "mypassword", false,
recievingAppleDeviceId);
} catch (CommunicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeystoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

最佳答案

您应该使用 InputStream,并在您的类路径中包含 .p12 文件,并像这样使用:

InputStream keyStore = this.getClass().getResourceAsStream("nameOfMyKeystore.p12");

关于iOS 推送通知 - JavaPNS - keystore.p12 文件安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11944347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com