Forge Acision即時通訊學習

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");
        }
    });
}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章