什么';NOTNOP java apns中ApnsService.start的用法是什么?我可以使用push方法推送消息,而无需启动()

什么';NOTNOP java apns中ApnsService.start的用法是什么?我可以使用push方法推送消息,而无需启动(),java,push,apple-push-notifications,Java,Push,Apple Push Notifications,我只是在没有sv.start()的情况下使用了sv.push(令牌,有效负载),它似乎工作得很好。 那么start()和stop()有什么用呢?我应该在代码中添加它们吗?您没有请求非阻塞/排队或池化APNS服务,因此生成器返回的默认Impl是ApnsServiceImpl,其start()方法不执行任何操作 sv = APNS.newService() .withCert("./dev.p12", "pwd")

我只是在没有sv.start()的情况下使用了sv.push(令牌,有效负载),它似乎工作得很好。
那么start()和stop()有什么用呢?我应该在代码中添加它们吗?

您没有请求非阻塞/排队或池化APNS服务,因此生成器返回的默认Impl是
ApnsServiceImpl
,其
start()
方法不执行任何操作

                  sv = APNS.newService()
            .withCert("./dev.p12", "pwd") 
            .withSandboxDestination()
            .build();   
其他impl,如
minadaptor
start()
上确实有一些init代码

从:

void start():启动服务。潜在的实现可能会失败 准备其连接或数据结构,以便能够发送 信息。此方法是一个阻塞调用,即使服务 表示非阻塞推送服务。一旦服务返回, 它已准备好接受推送请求

在您的情况下,服务似乎已经启动。尝试
sv.stop()
然后
sv.push()
会发生什么?(它应该失败)


或者@Deepak的解释也可能有效

@user2126346它取决于您需要的连接数量和瓶颈所在。池服务维护一个
ConcurrentLinkedQueue
;服务推送(令牌、有效载荷);并且可以成功推送消息。所以push方法可能会自动调用start(),我已经检查了源代码,当我在notnoop apns中获取实例时,服务似乎已经启动了。如果连接失败,它将尝试3次重新连接。
    public void start() {
}
public void start() {
    cf = connector.connect(new InetSocketAddress(host, port));
    cf.awaitUninterruptibly();
}