首先先提供 相關檔案
https://drive.google.com/file/d/0B7nu3f_AuGWEM3l3WGJBQXp3R0E/edit?usp=sharing
裡面有三個檔案
這兩個檔案是跟xmpp相關的設定,不需要做修改,直接丟進workspace裡就行了
FacebookChatManager.java
SASLXFacebookPlatformMecha.java
第三個檔案
SendMessageIntentService.java
我這邊是使用background service來傳送 message 如果有仔細去看code會發現在傳送訊息之間我有使用sleep,這是因為我發現不間斷的傳送會讓訊息loss掉,所以使用這個方式(算是暫時可用的解法)
要使用這個功能,首先必須login 並且擁有"xmpp_login"的權限 如果已經login的話可以使用
newPermission來增加擁有的權限
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest( (Activity)context, newPermission); newPermissionsRequest.setCallback(statusCallback); Session.getActiveSession().requestNewPublishPermissions(newPermissionsRequest);
只需要在newPermission裡面塞入 "xmpp_login"即可
接著稍微看一下 service裡面做的事情
@Override protected void onHandleIntent(Intent intent) { // TODO Auto-generated method stub nameList = getNameList(intent); if(nameList.size()>0){ message = intent.getStringExtra(MSG_EXTRA); FacebookChatManager facebookChatManager = FacebookChatManager.getInstance(this); if (facebookChatManager.connect()) { if (facebookChatManager.logIn(getString(R.string.fb_app_id), Session .getActiveSession().getAccessToken())) { List<String> resultList = facebookChatManager.findSendMessageList(nameList); facebookChatManager.sendBatchMessage(resultList, message); } facebookChatManager.disConnect(); } } }
我將message 以及 friend Id 傳進來在connect 完成之後就使用sendbatch的方式將訊息傳遞出去
facebook目前已經有提供新的做法,但是該做法必須安裝facebook messager 詳細的內容可以參考 http://tedforum.blogspot.tw/2014/05/android-facebook-v20314sdk-chat-api.html
沒有留言:
張貼留言