2016-07-29 8 views
0

Smack to Firebase Cloud Messaging CCS와의 연결을 설정하려고합니다. 다음과 같이 보호 된 Smack 인터페이스에 문제가 있습니다. 나는 왜 이러한 인터페이스가 요구되는지 정확히 알지 못한다.Smack 라이브러리의 보호 클래스 내에서 예외가 생성되었습니다.

configBuilder = XMPPTCPConnectionConfiguration.builder(); 
configBuilder.setServiceName("192.168.1.74").setHost("fcm- xmpp.googleapis.com").setUsernameAndPassword(s1, s2)    .setPort(5236).setSendPresence(false).setCompressionEnabled(false).setCustomSSLContext(contexty) 
other_connection = new XMPPTCPConnection(configBuilder.build()); 
//other_connection object is an AbstractXMPPConnection object 

헤로인/안드로이드 코드가 연결을 시도하지만, 그렇게 실패

내가 내 구성 빌더 객체와 나의 연결을 설정하는 방법은 아래를 참조하십시오. 예외는 다음과 같습니다. SSlcontext 객체가 인증 기관에서 유효성이 검사 된 유효한 인증서를 보유한 키 저장소를 포함하는 keymanagerfactory로 초기화되었습니다.

예외 :

**** Verification of void org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter.<init>(org.jivesoftware.smack.tcp.XMPPTCPConnection) took 135.634ms* 
07-29 03:30:14.211 3346-3408/rarigames.answerme V/RenderScript: 0xa172ca00 Launching thread(s), CPUs 2 
07-29 03:30:39.281 3346-3548/rarigames.answerme D/ricky: Unable to connect or login to FCM CCS. org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 25000ms (~25s). Used filter: No filter used or filter was 'null'. 
07-29 03:30:39.284 3346-3557/rarigames.answerme W/AbstractXMPPConnection: Connection closed with error 
                     org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT ��[email protected]:8 in [email protected]) 
                      at org.kxml2.io.KXmlParser.next(KXmlParser.java:432) 
                      at org.kxml2.io.KXmlParser.next(KXmlParser.java:313) 
                      at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1169) 
                      at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:948) 
                      at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:963) 
                      at java.lang.Thread.run(Thread.java:818) 

당신이 볼 수있는 문제를 제공하는 헤로인 클래스는 다음과 같습니다 보호 클래스 XMPPTCPConnection.PacketReader과의 BufferedReader가 언급 무엇 보호 클래스 XMPPTCPConnection.PacketWriter 읽으려고하는 예외? FCM CCS의 XML 응답? 연결하기 전에이 연결을 인증해야합니까? 이게 무슨 일이 벌어지고있는 것입니까? 내가 연결을 인증하지 않고 연결하려고 할 때 객체가 자체 인증을 시도하고 XML 패킷이 Smack 라이브러리의 이러한 보호 된 클래스로 보내지는 것입니까? FCM CCS가 실제로 전송하는 경우 인증 목적으로 전송 될 가능성이있는 XML 문서를 어떻게 얻을 수 있습니까? 내가 여기에 실종 된 모든 오류를 제거하는

의 SSLSocket 객체이었다 : 좋아 모든 사람이

+0

CCS에 연결하려는 위치를 명확히 할 수 있습니까? 이것이 설계된 방식이 아닌 Android 클라이언트에서 CCS에 연결하려는 것 같습니다. –

+0

FCM CCS에 연결할 수있었습니다. SSLsocket이 누락되었습니다. 그래서 내가 한 것은 내 SSLcontext를 사용하여 SSLsocket을 만드는 것이 었습니다. 이제 오류가 사라지고 FCM CCS에 연결됩니다. 하지만 이제 다음과 같은 오류가 발생합니다. X-OAUTH2의 인코딩이 잘못되었습니다. 연결이 스맥 라이브러리를 사용하여 SASLAuthentication을 사용하려고 시도하는 것 같습니다. SASLMechanisms를 등록 해제하고 연결에 강제로 FCM CCS가 안드로이드 클라이언트에 대해 요구하는 SASLPlainMechanism만을 사용하려고합니다. 어쩌면, 내가 인증하는 순서를 바꾸어야한다. @ArthurThompson –

+0

애플리케이션 서버 또는 Android 클라이언트에서 스맥 코드를 어디에서 실행하고 있습니까? –

답변

0

어떤 조언이나 제안에 대한

감사합니다. 소켓 연결과 기계 연결에 대해 많이 알지 못하기 때문에 단서가 없습니다. 많은 것을 읽은 후에, 나는이 물건을 놓치고 있다는 것을 깨달았다. 안드로이드 코드와 FCM CCS 사이의 연결이 흐를 수있는 오류가 사라졌습니다. 내가 SASLAuthentication가 헤로인을 사용하여 다루는 새로운 오류로 실행하고,

.setSocketFactory(contexty.getSocketFactory()); 

을하지만 그래서 난 그냥 내 configBuilder 개체에이 메서드 호출을 추가했습니다. 나는 곧 그 오류들에 관한 질문을 게시 할 것입니다. FCM CCS에 대한 연결/로그인을 설정하는 데 더 가까워지고있는 것 같습니다.

+0

나는 MucConfigurationNotSupportedException을 얻고있다. 안드로이드 마약에서 4.2.0-beta1 해결책을 안다? @i_o – MathaN

+1

예외에 대해 잘 모릅니다. FCM CCS에 대한 연결을 설정하는 데있어 예외를 다루었습니다. 제가 말씀 드릴 수있는 것은 다음 링크에서 Smack에 대한 javadocs를 살펴보아야한다는 것입니다. http://download.igniterealtime.org/smack/docs/latest/javadoc/ 클래스에 대해 읽어보십시오. 귀하의 예외는 다중 사용자 채트 형식에서 비롯된 것 같습니다. 아마도 그것을 다루는 수업이있을 것입니다. 문서를 읽으십시오. @MathaN 메소드를 읽고 다른 Smack 객체와 어떻게 상호 작용하는지 보면서 많은 예외를 처리 할 수있었습니다. –

+0

감사합니다. :) – MathaN