我试图使用苹果的推送通知。 我在这里使用本教程: 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一部分。 这里是什么文件说,有关密钥库:
对象密钥库:引用到密钥存储文件,或实际密钥库的内容。 请参阅准备证书有关如何创建一个密钥存储更多的信息。 您可以通过以下对象来此参数:
- java.io.File的:直接指向密钥存储文件
- java.lang.String中:到本地密钥库文件的路径
- 的java.io.InputStream:流从密钥库提供所述字节
- 字节[]:一个密钥库的实际字节
- java.security.KeyStore中:实际加载密钥库
我不只是想在我的计算机上的密钥库的路径输入(因为他们在这里得到错误,而使用Java的PNS发送推送通知到iPhone? ),因为我觉得这样是不安全的。
我应该使用哪个对象? 我倾向于认为使用java.security.KeyStore中。
最后一点,需要在亚马逊Web服务的Elastic青苗被托管(如果该事项)这个代码。
---------编辑1 ------------
我曾试图把理查德·罗斯三世的代码。 但在此之前,可以学习,如果我的.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弹性魔豆服务器的方式有问题?
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();
}
}
}