Pushbullet的令人敬畏的服務有一個websocket流,您可以訂閱,然後聽取推送到您的設備,這正是我想要的。我希望我的應用程序能夠連接到消息流,並根據他們所說的去做東西。在Android上連接到Pushbullet的Secure Websocket
我試過使用https://github.com/andrepew/Java-WebSocket/tree/1.3.0-Android-SSL-Fix(從https://github.com/TooTallNate/Java-WebSocket分叉),但我沒有運氣。有點超時後,連接響應回來與
onClose -1, draft [email protected] refuses handshake, false
和
05-22 03:24:30.709 15423-15904 java.lang.NullPointerException: ssl == null
05-22 03:24:30.710 15423-15904 com.android.org.conscrypt.NativeCrypto.SSL_read_BIO(Native Method)
05-22 03:24:30.710 15423-15904 com.android.org.conscrypt.OpenSSLEngineImpl.unwrap(OpenSSLEngineImpl.java:477)
05-22 03:24:30.710 15423-15904 javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:1006)
我的代碼來獲取的(沒有我的訪問令牌......)甚至嘗試了「信任所有主機「建議破解,
private void createConnection()
{
URI uri = URI.create("wss://stream.pushbullet.com/websocket/" + pushAT);
final WebSocketClient mWebSocketClient = new WebSocketClient(uri) {
@Override
public void onOpen(ServerHandshake serverHandshake) {
Log.d(TAG, "onOpen " + serverHandshake);
}
@Override
public void onMessage(String s) {
Log.d(TAG, "onMessage " + s);
}
@Override
public void onClose(int i, String s, boolean b) {
Log.d(TAG, "onClose " + i + ", " + s + ", " + b);
}
@Override
public void onError(Exception e) {
Log.d(TAG, "onError " + e);
e.printStackTrace();
}
};
Log.d(TAG, "Connecting to " + uri);
trustAllHosts(mWebSocketClient);
mWebSocketClient.connect();
Log.d(TAG, "Connecting to " + uri);
}
public void trustAllHosts(WebSocketClient wsc) {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
}
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
}};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
wsc.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(sc));
} catch (Exception e) {
e.printStackTrace();
}
}
嗯,現在我正在考慮它,有一個一致的str一般來說,開放可能不是最好的方法。應用程序如何做,我認爲這是更普通的推送通知方式,而不是WSS,是嗎?任何方式,我可以捎帶只是在那些?我的意思是,塔斯克如何搶佔? – seaders
Android應用程序使用標準的GCM推送通知。我不確定塔斯克如何抓住這些,但我會檢查與Android的人。我可能會爲其他應用程序實現一個使用GCM推送通知的事情,但尚未完成此任務。 –