2014-03-25 5 views
25

자바 프로그래밍에 익숙하지는 않지만 외부 라이브러리 등에서 일한 적이 없다. 이제는 "텔레 그램"오픈 소스 메시징 플랫폼 용 데스크톱 클라이언트를 개발하고 싶다. API에 관해서는 고민 중이다. -용법.Java Desktop App 용 Telegram API 사용 하시겠습니까?

https://core.telegram.org/api에서 발견 된 전보의 API에 대한 꽤 많은 문서이고, 나는 이미 GitHub의에서 mtproto, 전보-API 및 TL-코어를 다운로드하고, Gradle을 사용하여 소스에서 내 자신의 라이브러리 항아리를 컴파일했습니다. 또한, 이미 사용자가 버튼을 클릭하고 전화 번호를 입력하겠다고 약속 한 작은 애플리케이션을 작성했습니다. Java Swing-Libraries와 ActionListener를 사용하고 있습니다.

사용자가 입력 한 전화 번호가 이미 등록되어있는 경우 확인해야하며, auth.checkPhone 메서드가이를 지원할 것으로 보입니다. 하지만 어떻게 내 이클립스 프로젝트 내에서 그것을 참조 할 수 있습니까? 어떤 수업에서도 "checkPhone"메서드가 표시되지 않습니다! 어떻게해야합니까?

제발 도와주세요. 제 자신을 도울 수 없으며 제 프로젝트에 필사적으로 갇혀 있습니다. 작은 힌트조차도 도움이 될 것입니다. 사전에

감사합니다, 루카스

+1

안녕하세요, 내 질문을 여기에서 볼 수 있습니다 : http://stackoverflow.com/questions/22903957/starting-a-telegram-api-instance 그 도움이 있는지 확인하십시오. 에스. :) – brain56

답변

17

기본적으로 당신이 ex3ndr/telegram-api 저장소에 GitHub의에 주어진 코드의 공백을 작성해야합니다. 당신이 내장 된 라이브러리 JAR 파일 및 이클립스 프로젝트의 Java 빌드 경로에 tl-api-v12.jar 파일을 가지고있는 경우에, 당신은 당신의 API credentials와 함께 AppInfo 객체를 설정하는 데 필요한 README 파일의 RPC Calls 섹션

먼저보고, AbsApiStateApiCallback 인터페이스를 구현하는 몇 가지 새로운 클래스를 만들어야합니다. 이들을 사용할 수있게되면 TelegramApi 개체를 만들고 다음과 같이 Telegram 서비스에 RPC 호출을 할 수 있습니다.

// TODO set up AbsApiState, AppInfo and ApiCallback objects 
TelegramApi api = new TelegramApi(state, appInfo, apiCallback); 

// Create request 
String phoneNumber = "1234567890"; 
TLRequestAuthCheckPhone checkPhone = new TLRequestAuthCheckPhone(phoneNumber); 

// Call service synchronously 
TLCheckedPhone checkedPhone = api.doRpcCall(checkPhone); 
boolean invited = checkedPhone.getPhoneInvited(); 
boolean registered = checkedPhone.getPhoneRegistered(); 
// TODO process response further 

TelegramApi 객체 API의 요청 응답 스타일 원격 서비스에 대한 연결을 나타냅니다이 경우 제안 된 auth.checkPhone 방법을 사용하여. RPC 호출은 doRpcCall 메서드를 통해 이루어지며이 메서드는 적절한 매개 변수로 채워진 org.telegram.api.requests 패키지 (이 예의 TLRequestAuthCheckPhone 형식)에서 요청 개체를 가져옵니다. 그런 다음 응답 객체 (위의 TLCheckedPhone)가 사용 가능한 경우 결과와 함께 반환됩니다. 이 방법은 즉시 반환하는 비동기 호출하고 onResult 콜백 메소드의 경우

는 결과를 사용할 수있을 때 실행됩니다

// Call service aynchronously 
api.doRpcCall(checkPhone, new RpcCallbackEx<TLCheckedPhone>() { 
    public void onConfirmed() { } 
    public void onResult(TLCheckedPhone result) { 
     boolean invited = checkedPhone.getPhoneInvited(); 
     boolean registered = checkedPhone.getPhoneRegistered(); 
     // TODO process response further 
    } 
    public void onError(int errorCode, String message) { } 
}); 
+0

안녕하세요, 마지막 답변 이후 얼마간의 시간이 지나서 죄송합니다. 전 누군가가 저의 낡은 실에 응답 한 것을 알기 전까지이 프로젝트에 대한 작업을 포기했습니다. 나는이 프로젝트를 시작하는 방법의 대부분을 이해했지만 지금은 "apiStorage"** 지점에 머물러 있다고 생각합니다. ex3ndr's-gitHub-page의 readme.md에서 "Telegram-Api"-Object는 "새로운 MyApiStorage"**에 의해 생성 된 "ApiStorage"개체를 필요로합니다. 그러나 _ "MyApiStorage"-class_를 찾을 수 없으므로 어떻게해야합니까? – LukeLR

+1

또한, 나는 gradle을 사용하여 libraries_을 구축 할 수 있습니다. 나는 GitHub에서 리소스를 다운로드하고 readme에서 말한대로 폴더의 이름을 변경했지만 ** gradle은 항상 ** '무엇이 잘못 되었는가 : 작업의 종속성을 결정할 수 없습니다 : test'로 ** 실패합니다. > 이름이 'default'인 구성을 찾을 수 없습니다. ' 이 문제를 어떻게 해결해야할지 모르겠다. 도와 주겠니? 지금 당장은 원시 리소스 파일을 이클립스 프로젝트에 복사했지만 그 gradle 문제를 해결할 방법이 있어야합니다. 나는 어떤 대답을 주셔서 감사합니다. 미리 감사드립니다. 루카스 – LukeLR

+1

'MyApiStorage' 비트는 복잡한 부분입니다. org.telegram.api.engine.storage.AbsApiState 인터페이스를 구현하는 클래스를 만들어서 생성자에 대한 첫 번째 인수로 사용해야합니다. 당신의 IDE가 당신을 시작하게 해줄 스켈레톤 클래스를 만드는 것을 도울 수 있어야합니다 ... – grkvlt

1

아니면 그냥이 API https://github.com/pengrad/java-telegram-bot-api

보면 정말입니다 간단한 사용

+0

이 링크는 질문에 대한 답변 일지 모르지만 여기에 답변의 핵심 부분을 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. – slfan