Forge Acision 是國外的一家做即時通訊的機構,旗下產品包括:短消息服務、消息推送、音視頻對話等,官網https://www.xura.com/,提供客戶端sdk,包括android、iphone、瀏覽器javascript相關SDK,另外提供企業自建業務平臺的對接sdk叫forge as api,這個sdk用於企業自建業務平臺對接forge雲平臺服務,forge提供公共雲服務平臺,用於登陸認證、信令交換、打洞服務。主要還是基於webrtc作爲架構核心進行的二次研發的產物。
下面對於他的產品我做一下android端的使用介紹:
使用其產品需要再進官網申請一個apikey,用來讓雲服務識別連接身份。
2、下載android sdk http://releases.sdk.xura.com/latest/acisionsdk-android.zip
3、打開android studio新建工程,導入sdk包中的 aar 文件
4、修改AndroidManifest.xml文件,其中加入
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />
5、假設啓動文件是MainActivity
在MainActivity中加入
import android.util.Log; import android.widget.TextView; import com.acision.acisionsdk.AcisionSdk; import com.acision.acisionsdk.AcisionSdkCallbacks; import com.acision.acisionsdk.AcisionSdkConfiguration; import com.acision.acisionsdk.authentication.AuthenticationFailureData;
private static final String TAG = "com.acision.acisionsdkdemo";
private AcisionSdk forgeClient;
@Override protected void onStart() { Log.w(TAG, "onStart"); AcisionSdkConfiguration config = new AcisionSdkConfiguration("APIKEY", "USERNAME", "PASSWORD", this.getApplication());//連接雲服務器 config.setPersistent(true); forgeClient = new AcisionSdk(config, new AcisionSdkCallbacks() { @Override public void onAuthenticationFailure(AcisionSdk forgeClient, AuthenticationFailureData data) //連接失敗回調 { Log.w(TAG, "Application has got an onAuthenticationFailure callback"); TextView textElement = (TextView) findViewById(R.id.hello); textElement.setText("forge authentication failed. check your config."); } @Override public void onConnected(AcisionSdk forgeClient) //連接成功回調 { Log.d(TAG, "Application has got an onConnected callback"); TextView textElement = (TextView) findViewById(R.id.hello);//修改text textElement.setText("Hello forge"); } }); super.onStart(); }其中APIKEY是你在官網註冊的apikey,USERNAME、PASSWORD爲測試用戶名密碼,此處forge提供第三方認證,比如facebook,youtube,inline,what'sapp等登陸認證,當然國外不支持微信、QQ、微博等認證。也支持自有服務器認證,自有服務器認證的流程是,登陸用戶名和密碼先提交雲服務平臺,然後雲服務平臺再調用你提供的自由服務器登陸接口進行認證。官網爲了方便測試,提供了從test00~test99的測試用戶名,密碼和用戶名一致。
6,我們用test00/test00作爲用戶名/密碼登陸雲服務平臺,啓動app,進行連接
7、實時對話,修改onConnected回調函數
@Override public void onConnected(AcisionSdk forgeClient) { Log.d(TAG, "Application has got an onConnected callback"); callbacks.onConnected(); ourName = forgeClient.getAddress(); ourName = ourName.substring(0, ourName.indexOf("@")); messaging = forgeClient.getMessaging(); messaging.setCallbacks(new MessagingReceiveCallbacks() { @Override public void onMessageReceived(Messaging messaging, MessagingReceivedMessage message) { Log.d(TAG, "Message received "); if (receiver != null) { receiver.receiveMessage(message.getFrom(), message.getContent(), message.getSubmitted()); } } }); }8、定義發送函數
public void sendToDestination(final String to, final String message, final MessageStateCallbacks callbacks) { MessagingSendOptions options = new MessagingSendOptions(); messaging.sendToDestination(to, message, options, new MessagingSendCallbacks() { @Override public void onMessagingAcknowledged(Messaging messaging, String MsgId, Date submitted) { Log.d(TAG, "Application got acknowledgement of message sent"); } @Override public void onMessagingError(Messaging messaging, String code, String message) { Log.w(TAG, "Application failed to send message"); } }); }