Giter Club home page Giter Club logo

dbay-apns-for-java's People

Contributors

ramosli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dbay-apns-for-java's Issues

feedback service问题

不知为什么,调用您的demo,feedback总是为空,我有去做删除掉对应的应用程序,还是返回为空,不知道还需要怎么样的配置呢?

iOS证书过期之后,用新的证书报错如下,是证书的问题吗?

2017-03-20 16:34:35 PM -->ERROR{ApnsConnectionImpl.java:172}-pro-1 Received fatal alert: internal_error
javax.net.ssl.SSLException: Received fatal alert: internal_error
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:747)
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123)
at java.io.OutputStream.write(OutputStream.java:75)
at com.dbay.apns4j.impl.ApnsConnectionImpl.sendNotification(ApnsConnectionImpl.java:167)
at com.dbay.apns4j.impl.ApnsServiceImpl$2.run(ApnsServiceImpl.java:88)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

大批量发送的疑问

RamosLi 你好,我是通过Google搜到你的博客然后进到这里的。
大概看了一下你的demo和源码,貌似没有支持大批量发送的功能嘛?
如果有的话,最好封装成直接可用的API哦,并且更新相应Demo。

需要的功能是:大批量发送给成千上万个设备,并且能非常优雅地处理某些token失效后对后续token的重发机制。当然,对失效token的回调通知也应该是必不可少的。

往作者指教,谢谢

不同产品推送问题

你好,我想问一个问题.
为什么ApnsConfig里面的public void setName(String name) {
this.name = name;
}给注释掉了呢,难道不能同时对多个产品推送么?

跪求作者答疑

 作者,您好,我基于您的apns4j,写了一个ios推送应用。
 主程序不断读取queue中的数据。有数据推,否则休息。
 遇到了一些情况。希望您赐教
 1.ApnsConnectionImpl中推一条输出日志,再推不输出日志
 2.输出日志的时候,测试机器都收到,不输出日志的时候个别测试机收到

  以下是我的代码
            IApnsService service = getApnsService();
    new Thread(new DelFailTokenThread(service)).start();
    int sleep = 0;
    int timeSleepCount = 0;
    while (true) {
        try {
            payment = (QueuePushPayment) memcachedClient.get(queue);
            if (payment == null) {
                if (sleep < sleepCount) sleep++;
                logger.info("push thread is   sleepCount=" + sleep);
                if(sleep == sleepCount){
                    sleep = 0;
                    try {
                        Thread.sleep(60000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }else{
                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            } else {
                timeSleepCount++;
                if (sleep > 0)  sleep--;
                Payload payload = getPayload(payment.getPayload());
                service.sendNotification(payment.getDeviceToken(), payload);
                payload = null;
                if (timeSleepCount  == 10000) {
                    timeSleepCount = 1;
                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

apns证书问题

对同一个证书,apns对证书的校验返回不同的结果;在一台服务器上返回结果是正常的,在另一台服务器上返回就是无效的,请问apns是否对ip有限制之类的

请问这个警告需要处理嘛?

每次也能发送成功,但总会报下面这个异常。请问是什么意思?
SEVERE: dev-1 Socket closed
java.net.SocketException: Socket closed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:422)
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:460)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:863)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:820)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
at java.io.InputStream.read(InputStream.java:82)
at com.dbay.apns4j.impl.ApnsConnectionImpl$1.run(ApnsConnectionImpl.java:258)
at java.lang.Thread.run(Thread.java:695)

这个警告需要处理吗

WARN com.dbay.apns4j.impl.ApnsConnectionImpl- pro-4 Didn't find error-notification in the queue. Maybe it's time to adjust cache length.

It can not run in jdk 1.7

When i use dbay_apns push apns on jdk 1.7 it returns as follows.
2015-11-04 13:57:44,257 [result]-[INFO] pro-1 Received error response. status: 8, id: 101, error-desc: Invalid token

JDK 1.7U79 x64
APNS Production Certification
The token can be send on Jdk 1.6u45 and works fine.

昨天突然发现PUSH出现异常,请教作者同志

javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:946)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:702)
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122)
at java.io.OutputStream.write(OutputStream.java:75)
at com.dbay.apns4j.impl.ApnsConnectionImpl.sendNotification(ApnsConnectionImpl.java:167)
at com.dbay.apns4j.impl.ApnsConnectionImpl.sendNotification(ApnsConnectionImpl.java:123)
at com.dbay.apns4j.impl.ApnsServiceImpl$1.run(ApnsServiceImpl.java:75)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:482)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
... 10 more

Send Notification

发送apns通知时出现大量java.net.SocketTimeoutException: Read timed out

关于startErrorWorker中closeSocket(curSocket);问题

你好,作者
startErrorWorker线程是会一直检查是否有错误响应发生,直到有错误响应发生重新建立连接重发队列中的数据(会启动一个新的startErrorWorker线程1),重发完毕(finally中关闭socket连接,会导致启动一个新的startErrorWorker线程2),startErrorWorker线程1没有发现错误会一直运行,startErrorWorker线程2也一直运行,startErrorWorker线程2浪费资源,没有必要。
以上是我的分析,请作者给予解释。

重试机制如果再次失败,会不会进入死循环 ?

作者同志,您好!
如题。
在 startErrorWorker() 中会把上一条失败的消息加入 resentQueue, 然后通过ApnsResender.getInstance().resend(name, resentQueue);
这里的 resend() 函数其实也是调用 service.sendNotification(queue.poll()); 来发送。
那么理论上,如果一直出错,那么会不断创建新线程去重试?
我的理解有问题么? 多谢并期待您的答复。

RamosLi请问我一次性推送上百万token,几秒钟不到都推送完了,正常吗?

我的机器部署在美国的,每次后台推送上百万token,我通过打印你代码中队列的剩余大小来看,几秒钟不到都完了,请问正常不?

    private ThreadPoolExecutor service = null;
private ApnsConnectionPool connPool = null;
private IApnsFeedbackConnection feedbackConn = null;
private ApnsServiceImpl(ApnsConfig config) {
    int poolSize = config.getPoolSize();
    service = new ThreadPoolExecutor(poolSize, poolSize,
            0L, TimeUnit.MILLISECONDS,
            new LinkedBlockingQueue<Runnable>());

    SocketFactory factory = ApnsTools.createSocketFactory(config.getKeyStore(), config.getPassword(), 
            KEYSTORE_TYPE, ALGORITHM, PROTOCOL);
    connPool = ApnsConnectionPool.newConnPool(config, factory);
    feedbackConn = new ApnsFeedbackConnectionImpl(config, factory);
}
public long remainTask() {
    return service.getQueue().size();
}

我就是调用remainTask()方法来查看的,很快日志显示都剩余0了,求解?谢谢

发送失败:Unexpected command or size. commend: 0 , size: -1

你好,看到你的库,很感兴趣,所以试了一下,但一直无法发送成功。日志如下:

2014-04-25 10:38:49,767 DEBUG [com.dbay.apns4j.impl.ApnsConnectionImpl] - pro-1 create a new socket.
2014-04-25 10:38:51,369 INFO [com.dbay.apns4j.impl.ApnsConnectionImpl] - pro-1 Send success. count: 1, notificaion: id=101 token=略去 payload={"aps":{"badge":1,"alert":"How are you?","sound":"ring-ring.aiff"}}
2014-04-25 10:38:51,370 ERROR [com.dbay.apns4j.impl.ApnsConnectionImpl] - pro-1 Unexpected command or size. commend: 0 , size: -1

用其它的库可以发送成功,如javapns, pushy。

还有个建议config.setPassword(""); 最好允许空字符串,因为比如我的证书的密码就是为空。

还有这个库是不是还没有传到maven上,maven里找不到。

谢谢。

com.dbay.apns4j.impl.ApnsConnectionImpl [10] dev-10 Connection reset

作者你好,在使用过程中遇到这种问题,尝试3次后发送失败,还望解答一下哈
2015-09-30 09:59:35,221 [pool-8-thread-2] ERROR com.dbay.apns4j.impl.ApnsConnectionImpl [10] dev-10 Connection reset
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:293)
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:331)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:789)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1112)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:623)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
at java.io.OutputStream.write(OutputStream.java:58)
at com.dbay.apns4j.impl.ApnsConnectionImpl.sendNotification(ApnsConnectionImpl.java:167)
at com.dbay.apns4j.impl.ApnsConnectionImpl.sendNotification(ApnsConnectionImpl.java:123)
at com.dbay.apns4j.impl.ApnsServiceImpl$1.run(ApnsServiceImpl.java:69)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
2015-09-30 09:59:35,222 [pool-8-thread-2] ERROR com.dbay.apns4j.impl.ApnsConnectionImpl [10] dev-10 Notification send failed. id=122 token=166d43a54c13bc562ac0bc524e52b4856fb73733aac4dbda18af11e9a0289c31 payload={"mId":"25119","aps":{"sound":"default","alert":"You have got a new message.","badge":1},"param":"100794","subject":"","link":4,"prod":"mic"}

support title-loc-key?

now I want to a title string for the notification using the title-loc-key and title-loc-args keys.
but I found dbay-apns has not supported? any suggestions?

com.dbay.apns4j.impl.ApnsConnectionImpl.startErrorWorker()

经过测试 这个方法运行期间 可能会造成大量的数据重发 1000个错误的token 最终发送次数高达8000次

com.dbay.apns4j.impl.ApnsServiceImpl.sendNotification(String, Payload) 该方法作为推送的主入口 经过测试实际调用token1000次
com.dbay.apns4j.impl.ApnsServiceImpl.sendNotification(PushNotification) 该方法作为重发的主入口 经过测试实际调用次数高达8000次

希望作者可以进行测试一下

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.