3步完成Android端与C#后台推送:
1.正确导入signalR.jar包(http://download.csdn.net/download/qq_29653373/9673651)
2.在你需要的实现接受推送的Active中加入如下代码:
import org.json.JSONArray;
import android.app.Activity;
import android.content.OperationApplicationException;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;
import com.zsoft.SignalA.Hubs.HubConnection;
import com.zsoft.SignalA.Hubs.HubInvokeCallback;
import com.zsoft.SignalA.Hubs.HubOnDataCallback;
import com.zsoft.SignalA.Hubs.IHubProxy;
import com.zsoft.SignalA.Transport.StateBase;
import com.zsoft.SignalA.Transport.Longpolling.LongPollingTransport;
public class MainActivity extends Activity {
protected HubConnection con = null;
protected IHubProxy hub = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// http://192.168.120.101:9999/signalr/hubs
// http://192.168.120.100:8080/signalr
Connect(Uri.parse("http://192.168.120.101:9999/signalr/hubs"));
}
public void Connect(Uri address) {
con = new HubConnection(address.toString(), this,
new LongPollingTransport()) {
@Override
public void OnStateChanged(StateBase oldState, StateBase newState) {
switch (newState.getState()) {
case Connected:
// 连接成功
break;
default:
// 重连
break;
}
}
@Override
public void OnError(Exception exception) {
Toast.makeText(MainActivity.this,
"On error: " + exception.getMessage(),
Toast.LENGTH_LONG).show();
}
};
try {
// MyHub QueueCenterHub
hub = con.CreateHubProxy("QueueCenterHub");
} catch (OperationApplicationException e) {
e.printStackTrace();
}
// AddMessage pf_queuecenter_refresh
hub.On("pf_queuecenter_refresh", new HubOnDataCallback() {
@Override
public void OnReceived(JSONArray args) {
for (int i = 0; i < args.length(); i++) {
Toast.makeText(MainActivity.this,
"New message\n" + args.opt(i).toString(),
Toast.LENGTH_SHORT).show();
}
}
});
con.Start();
}
}
3.如果要发送消息则还需添加如下代码:
private void JoinGroup(String groupName) {
HubInvokeCallback callback = new HubInvokeCallback() {
@Override
public void OnResult(boolean succeeded, String response) {
if (succeeded) {
Toast.makeText(MainActivity.this, "發送成功!!!!"+response,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "发送失败!!!"+response,
Toast.LENGTH_SHORT).show();
}
}
@Override
public void OnError(Exception ex) {
Toast.makeText(MainActivity.this, "Error: " + ex.getMessage(),
Toast.LENGTH_SHORT).show();
}
};
List<String> args = new ArrayList<String>(1);
args.add(groupName);
hub.Invoke("hehe", args, callback);
}