2014-03-25 61 views
25

我對Java編程並不陌生,但我從未與外部庫合作過。現在我想爲「電報」開源消息傳遞平臺開發桌面客戶端,並且在涉及API -用法。爲Java桌面應用程序使用電報API?

關於Telegram API有很多文檔,發現在https://core.telegram.org/api,我已經從github下載了mtproto,telegram-api和tl-core,並且使用gradle從源代碼編譯了我自己的庫jar。另外,我已經編寫了一個小應用程序,用戶點擊一個按鈕並被要求輸入他的電話號碼,我正在使用Java-swing-Libraries和一個ActionListener。

現在應該檢查用戶輸入的電話號碼,如果它已經註冊,auth.checkPhone方法似乎可以做到這一點。但是我怎麼能在我的eclipse項目中引用它?我沒有在任何課程中看到任何方法「checkPhone」!我該怎麼辦?

請幫助我,我不能幫助自己,我拼命地卡在我的項目。即使是一個小提示也會有所幫助。

由於事先 盧卡斯

+1

嗨,你可以嘗試看看我的問題在這裏:http://stackoverflow.com/questions/22903957/starting-a-telegram-api-instance 看看是否有幫助秒。 :) – brain56

回答

17

從本質上講,你將必須填寫在ex3ndr/telegram-api庫GitHub上給予代碼的空白。如果你有你建庫Jar文件和Eclipse項目的Java構建路徑上的tl-api-v12.jar文件,再看看README的RPC Calls部分和

首先,你需要建立一個AppInfo對象與你API credentials,那麼你也將不得不創建一些新的類來實現AbsApiStateApiCallback接口。一旦這些可用,您可以創建TelegramApi對象並按如下方式對電報服務進行RPC調用;在這種情況下使用建議的方法auth.checkPhone

// 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的請求響應式的連接。通過doRpcCall方法進行RPC調用,該方法從org.telegram.api.requests程序包(示例中的TLRequestAuthCheckPhone類型)獲取填充了適當參數的請求對象。然後返回響應對象(上面的TLCheckedPhone),並在結果可用時返回結果。這實在是

// 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頁面的readme.md中說,「Telegram-Api」-Object需要一個「ApiStorage」對象,由**「new MyApiStorage」**創建。但是_I找不到那個「MyApiStorage」類,所以我應該放什麼? – LukeLR

+1

此外,我可以使用gradle構建libraries_。我從GitHub下載了資源並重新命名了自述文件中的文件夾,但** gradle總是失敗**,出現錯誤:無法確定任務的依賴關係:test。 >未找到名稱爲'default'的配置。'我不知道如何解決這個問題,你能幫忙嗎?現在我已經將原始資源文件複製到了我的eclipse項目中,但是必須有辦法解決這個gradle問題。我將不勝感激任何答案, 在此先感謝, Lukas – LukeLR

+1

'MyApiStorage'位是複雜的部分。您需要創建一個實現'org.telegram.api.engine.storage.AbsApiState'接口的類,並將其用作構造函數的第一個參數。你的IDE應該能夠幫助你構建一個骨架類來開始你的工作...... – grkvlt

1

或者只是看看這個API https://github.com/pengrad/java-telegram-bot-api

在異步調用該方法將立即返回,並onResult回調方法的情況下,執行時的結果可用簡單易用

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效 – slfan