关于消息推送,一直不解。服务器如何得到所有的客户端的device token。
1。每个客户端都可以把device token发给APNS服务器。
2。本地消息服务器发送信息到APNS服务器时,都要有device token。
这个device token从哪里获取的?Debug时能够理解,我们可以自行读取itouch/ipad/iphone上的。但是上线的APP,device token应该都是用户主动push到APNS。我们又怎么从APNS服务器上获取到这些device token呢?难道每次发消息只能发到一个device token?

解决方案 »

  1.   

    一般是这样:device token是由客户端获取后发送给你自己的服务器。当需要推送消息时,你的服务器发送带device token的推送消息给苹果的服务器,苹果服务器根据device token再推到对应的客户端
      

  2.   

    正解。
    需要你自己将从苹果获得的token,发给自己的服务器。
      

  3.   

    那服务器端获取客户端device是即时性的还是客户端将device发送到一个地方存储起来?
      

  4.   

    存起来的话是存到本地数据库吗?如果是的话,用户删除推送客户端的时候怎么同步删除服务器端数据库的记录。还有,我下载的ios服务器端有个feedback device功能,看起来是获取用户注册时的device的,但是总是拿不到数据。
    /**
     * Retrieves a list of inactive devices from the Feedback service.
     * @param args
     */
    private static void feedbackTest(String[] args) {
    String keystore = args[0];
    String password = args[1];
    boolean production = args.length >= 3 ? args[2].equalsIgnoreCase("production") : false;
    try {
    List<Device> devices = Push.feedback(keystore, password, production); for (Device device : devices) {
    System.out.println("Inactive device: " + device.getToken());
    }
    } catch (CommunicationException e) {
    e.printStackTrace();
    } catch (KeystoreException e) {
    e.printStackTrace();
    }
    }
      

  5.   

    你说的问题就是官方给的图中的第3步,这个绝对要自己的服务器把每个DeviceToken存起来的,用FeedBack接收,ps:
      

  6.   

    请问我往手机上装应用的时候,手机没有连接外网,依然能够直接获得到device token,它是怎么从apns获得的?  给我的感觉就是device token 直接手机ios上获取的呢?