2014-03-25 10 views
25

Ich bin nicht so neu in Java Programmierung, aber ich habe nie mit externen Bibliotheken usw. gearbeitet. Jetzt möchte ich einen Desktop-Client für die Open-Source-Messaging-Plattform "Telegram" entwickeln, und ich stehe fest, wenn es um API geht -Verwendung.Verwenden von Telegram API für Java Desktop App?

Es gibt ziemlich viel Dokumentation über die Telegram API, gefunden unter https://core.telegram.org/api, und ich habe bereits mtproto, telegramm-api und tl-core von github heruntergeladen und mein eigenes Bibliotheksglas aus der Quelle mit Hilfe von Gradle kompiliert. Außerdem habe ich bereits eine kleine Anwendung geschrieben, wo der Benutzer auf eine Schaltfläche klickt und aufgefordert wird, seine Telefonnummer einzugeben, ich benutze dazu die Java-Swing-Bibliotheken und einen ActionListener.

Die vom Benutzer eingegebene Telefonnummer sollte jetzt überprüft werden, wenn sie bereits registriert ist, die Methode auth.checkPhone scheint dafür geeignet zu sein. Aber wie kann ich in meinem Eclipse-Projekt darauf verweisen? Ich sehe keine Methode "checkPhone" in irgendeiner der Klassen! Was soll ich machen?

Bitte helfen Sie mir, ich kann mir nicht helfen und ich bin verzweifelt in meinem Projekt stecken. Selbst ein kleiner Hinweis würde helfen.

Vielen Dank im Voraus, Lukas

+1

Hallo, Sie können versuchen, meine Frage hier zu sehen: http://StackOverflow.com/Questions/22903957/Starting-Atelegramm-Appi-instance Siehe, ob diese Hilfe s. :) – brain56

Antwort

17

Im Wesentlichen müssen Sie auf GitHub im Repository ex3ndr/telegram-api gegeben, um die Zuschnitte im Code ausfüllen. Wenn Sie die Bibliothek Jar-Datei haben Sie gebaut und die tl-api-v12.jar Datei auf dem Eclipse-Projektpfad Java zu bauen, dann schauen Sie auf der RPC Calls Abschnitt der Readme und

Zuerst ein AppInfo Objekt mit Ihrem API credentials einrichten müssen, Dann müssen Sie auch einige neue Klassen erstellen, die die Schnittstellen AbsApiState und ApiCallback implementieren. Sobald diese verfügbar sind, können Sie das Objekt TelegramApi erstellen und einen RPC-Aufruf an den Telegramm-Dienst wie folgt durchführen: in diesem Fall mit der vorgeschlagenen auth.checkPhone Methode:

// 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 

Das TelegramApi Objekt stellt die Verbindung zum Remote-Service, der ein Anfrage-Antwort-Stil-API ist. RPC-Aufrufe werden über die doRpcCall-Methode ausgeführt, die ein Anforderungsobjekt aus dem org.telegram.api.requests-Paket (im Beispiel TLRequestAuthCheckPhone) mit den entsprechenden Parametern ausfüllt. Ein Antwortobjekt (TLCheckedPhone oben) wird dann mit dem Ergebnis zurückgegeben, wenn es verfügbar ist.

Im Falle eines asynchronen Aufruf sofort die Methode zurückgibt, und der onResult Callback-Methode wird ausgeführt, wenn das Ergebnis verfügbar:

// 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

Hey, tut mir leid, dass es seit meiner letzten Antwort eine Weile her ist, dass ich die Arbeit an diesem Projekt aufgegeben habe, bis ich gesehen habe, dass jemand meinen alten Thread beantwortet hat. Ich denke, ich habe das meiste verstanden, um mit diesem Projekt anzufangen, aber jetzt stecke ich im ** "apiStorage" ** - Punkt fest. In der readme.md der ex3ndr's-gitHub-Seite heißt es, das "Telegram-Api" -Objekt benötigt ein "ApiStorage" -Objekt, erstellt von ** "new MyApiStorage" **. Aber _Ich kann die "MyApiStorage" -Klasse nicht finden, also was soll ich dort hinstellen? – LukeLR

+1

Außerdem bin ich nicht in der Lage, die Bibliotheken mit Gradle zu erstellen. Ich habe die Ressourcen von GitHub heruntergeladen und die Ordner umbenannt, wie in der Liesmich beschrieben, aber ** Gradle scheitert immer ** mit einem '* Was schief gelaufen ist: Die Abhängigkeiten der Aufgabe konnten nicht ermittelt werden: test'. > Konfiguration mit dem Namen 'default' nicht gefunden. ' Ich weiß nicht, wie ich das beheben kann. Kannst du mir helfen? Im Moment habe ich die rohen Ressourcendateien in mein Eclipse-Projekt kopiert, aber es muss einen Weg geben, dieses Problem zu lösen. Ich würde mich freuen, alle Antworten, Vielen Dank im Voraus, Lukas – LukeLR

+1

Das 'MyApiStorage' Bit ist der komplizierte Teil. Sie müssen eine Klasse erstellen, die die Schnittstelle "org.telegram.api.engine.storage.AbsApiState" implementiert und diese als erstes Argument für den Konstruktor verwendet. Deine IDE sollte in der Lage sein, eine Skelettklasse zu bauen, damit du anfangen kannst ... – grkvlt

1

Oder schauen Sie sich diese API https://github.com/pengrad/java-telegram-bot-api

Es ist wirklich einfach zu bedienen

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert – slfan