发送简单的消息现在已经成功实现了,是基于最新版本的JAVAPNS做的,但是现在有个需求,不仅仅是要发送一个简单的提示,还附加的给客户端推送一些数据,以便于用户在打开应用后展示相关内容,看了一下JAVAPNS里面test程序有一个createComplexPayload的方法,貌似是来构建复杂的消息的,但是里面参数很多,不太懂,请问如何才能利用JAVAPNS来实现我的功能呢?现在附上javapns中复杂消息的实现: 
private static Payload createComplexPayload()
    {
        PushNotificationPayload complexPayload = PushNotificationPayload.complex();
        try
        {
            complexPayload.addCustomAlertBody("My alert message");
            complexPayload.addCustomAlertActionLocKey("Open App");
            complexPayload.addCustomAlertLocKey("javapns rocks %@ %@%@");
            ArrayList parameters = new ArrayList();
            parameters.add("Test1");
            parameters.add("Test");
            parameters.add(Integer.valueOf(2));
            complexPayload.addCustomAlertLocArgs(parameters);
            complexPayload.addBadge(45);
            complexPayload.addSound("default");
            complexPayload.addCustomDictionary("acme", "foo");
            complexPayload.addCustomDictionary("acme2", 42);
            ArrayList values = new ArrayList();
            values.add("value1");
            values.add(Integer.valueOf(2));
            complexPayload.addCustomDictionary("acme3", values);
        }
        catch(JSONException e)
        {
            System.out.println("Error creating complex payload:");
            e.printStackTrace();
        }
        return complexPayload;
    }

解决方案 »

  1.   

    http://blog.csdn.net/sxfcct/article/details/7939082
      

  2.   

    不知道我有没有理解正确,lz是希望推送的同时进行一些数据交换是吧。我之前开发的一个项目是通过APNs推送一个信号给移动端,移动端收到信号后通过API从服务器获取数据。而你所需要做的就是为这个数据传输提供一个API就够了。我们之所以这么做是因为APNs的信息有大小限制,图片之类的是无法直接包含在APNs中推送到手机上的。
      

  3.   

    苹果的消息推送是有长度限制的,苹果APNS不会接受超过256个字节的推送消息,所以是不能直接传递很复杂的数据过去的,通常的做法都是传个id,或者说是串到客户端,客户打开消息的同时去服务器取数据。
    不用太纠结javapns,其实只要理解苹果推送的消息结构就可以做了。
    苹果的基本消息结构是:{"aps":{"alert":"Hello, world!","sound":"default"}},这是一个json字典串,所以可以再里面适当的增加项,比如"id":"123",当苹果客户端打开程序的时候,接受这个字典,取出id,去取相应的信息。