首先先提供 相關檔案
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
沒有留言:
張貼留言