anyRTC uni-app 跨平臺SDK 發佈!總有一款適合你!

簡述

近期,收到不少的開發者夥伴的留言和建議,讓咱們適配uni-app 平臺,來知足他們的跨平臺開發的需求。anyRTC秉承着爲廣大開發者提供便利的開發環境,和對開發者們的支持,通過半月的努力,終於完成了uni-app 跨平臺SDK的開發和測試。html

截止到今天爲止,anyRTC跨平臺SDK已經包括了Electron、Flutter、uni-app 框架,爲衆多的開發者們提供了更多的選擇,和更加良好的開發環境。前端

什麼是uni-app

uni-app 是一個使用 Vue.js 開發跨平臺應用的前端框架,開發者編寫一套代碼,可編譯到iOS、Android、H五、小程序等多個平臺。vue

uni-app 繼承自 Vue.js,提供了完整的 Vue.js 開發體驗。java

uni-app 組件規範和擴展api與微信小程序基本相同。有必定 Vue.js 和微信小程序開發經驗的開發者可快速上手 uni-app ,開發出兼容多端的應用。android

uni-app的優勢

uni-app在跨端數量、擴展能力、性能體驗、周邊生態、學習成本、開發成本等6大關鍵指標上擁有極強的競爭優點。json

功能框架小程序

從下面uni-app功能框架圖可看出,uni-app在跨平臺的過程當中,不犧牲平臺特點,可優雅的調用平臺專有能力,真正作到海納百川、各取所長。微信小程序

一套代碼,運行多個平臺api

uni-app實現了一套代碼,同時運行到多個平臺;以下圖所示,一套代碼,同時運行到iOS模擬器、Android模擬器、H五、微信開發者工具、支付寶小程序Studio、百度開發者工具、字節跳動開發者工具、QQ開發者工具(底部8個終端選項卡表明8個終端模擬器):android-studio

實際運行效果以下:

總結

對於技術人員而言:不用學那麼多的平臺開發技術、研究那麼多前端框架,學會基於vue的uni-app就夠了。
對於公司而言:更低成本,覆蓋更多用戶,uni-app是高效利器。

uni-app 實時音視頻快速接入

以Android平臺爲例,介紹一下uni-app原生插件

什麼是uni原生插件

uni原生插件指的是將您本地原生開發的功能按照規範封裝成插件包,而後便可在uni-app前端項目中經過js調用您開發的原生能力。

開發環境

代碼實現

舉例說明擴展 module:

1.建立Android Studio的Module模塊
  • 在現有Android項目中建立library的Module。例如TestModule
  • 配置剛建立的Module的build.gradle信息。
//導入aar須要的配置
 repositories {
     flatDir {
         dirs 'libs'
     }
 }
 dependencies {
     //必須添加的依賴
     compileOnly 'com.android.support:recyclerview-v7:27.1.0'
     compileOnly 'com.android.support:support-v4:27.1.0'
     compileOnly 'com.android.support:appcompat-v7:27.1.0'
     compileOnly 'com.alibaba:fastjson:1.1.46.android'

     compileOnly fileTree(include: ['uniapp-release.aar'], dir: '../app/libs')
 }

Tips:

uniapp-release.aar是擴展module主要依賴庫,必須導入此依賴庫!

2.建立TestModule類
  • Module 擴展必須繼承 UniModule 類
public class TestModule extends UniModule
  • 擴展方法必須加上@UniJSMethod (uiThread = false or true) 註解。UniApp 會根據註解來判斷當前方法是否要運行在 UI 線程,和當前方法是不是擴展方法。
  • UniApp是根據反射來進行調用 Module 擴展方法,因此Module中的擴展方法必須是 public 類型。
//run ui thread
 @UniJSMethod(uiThread = true)
 public void testAsyncFunc(JSONObject options, UniJSCallback callback) { 
     Log.e(TAG, "testAsyncFunc--"+options);
     if(callback != null) { 
         JSONObject data = new JSONObject();
         data.put("code", "success");
         callback.invoke(data);
     }
 }

 //run JS thread
 @UniJSMethod (uiThread = false)
 public JSONObject testSyncFunc(){ 
     JSONObject data = new JSONObject();
     data.put("code", "success");
     return data;
 }
  • 一樣由於是經過反射調用,Module 不能被混淆。請在混淆文件中添加代碼:
-keep public class * extends io.dcloud.feature.uniapp.common.UniModule{*;}
3.註冊TestModule

因爲uni小程序運行在獨立子進程中。內存與宿主不共享。因此宿主進程註冊了TestModule,在uni小程序是沒法使用的。 Android建立子進程時會主動再次初始化Application!因此uni小程序註冊TestModule必須在Application中的onCreate初始化或註冊。

Tips

  • 註冊TestModule以前記得配置宿主的build.gradle導入Module模塊.
  • 如下示例代碼寫在宿主的Application中。
public class App extends Application { 
    @Override
    public void onCreate() { 
        super.onCreate();
        try { 
            UniSDKEngine.registerModule("TestModule", TestModule.class);
        } catch (UniException e) { 
            e.printStackTrace();
        }
    }
}

到此,咱們已經完成了一個簡單的 module 擴展

4. 在 uni小程序 中調用 module 方法

module 支持在 vue 和 nvue 中使用

<template>
    <div>
        <button type="primary" @click="testAsyncFunc">testAsyncFunc</button>
        <button type="primary" @click="testSyncFunc">testSyncFunc</button>
    </div>
</template>

<script>
    // 獲取 module 
    var testModule = uni.requireNativePlugin("TestModule")
    export default {
        methods: {
            testAsyncFunc() {
                // 調用異步方法
                testModule.testAsyncFunc({
                        'name': 'unimp',
                        'age': 1
                    },
                    (ret) => {
                        console.log(ret)
                    })
            },
            testSyncFunc() {
                // 調用同步方法
                var ret = testModule.testSyncFunc({
                    'name': 'unimp',
                    'age': 1
                })
                console.log(ret)
            }
        }
    }
</script>

Tips:

uni.requireNativePlugin僅用於獲取UniModule的對象。UniComponent不支持該方法!

應用場景

uni-app 跨平臺SDK的應用場景很是普遍,不管是在平常生活中,仍是在其餘領域都有不少的用武之地。

  • 教育方面

一對一小班課:學校內部局域網溝通;視頻家訪;一對一教學;輕鬆實現跨區域交流互動。一對一在線教育模式也是具個性化的,能夠全方面把控教學過程。一對一在線教育因材施教,全方位爲學生制定學習計劃,從而更具針對學生的特質並對症下藥。更重視學習方法,爲學生營造了一種全新的學習氛圍,經過相互感染,使學生在學習過程當中產生學習的動力和強烈的學習意識,讓學生更加關注學習。
在這裏插入圖片描述

  • 在線金融

金融貸款:從遞交申請材料到貸款發放,移動端便可輕鬆實現,在線審覈辦理貸款,同步錄製控制貸款風險。
在這裏插入圖片描述

視頻客服:一對一專屬視頻客服,可廣泛運用於銀行客服、線上審覈服務等業務,可在線確認客戶狀況,辦理業務,提升業務辦理速度,節約資源,也爲客戶提供更爲便捷的服務。視頻客服經過協調溝通、支持情感表達以及實時分享內容,爲客戶提供了更豐富的存在感、個性化體驗,配備了錄音/錄屏工具,主管/經理能夠檢查每一個視頻交互,以查看客服中心座席是否對客戶有同情心和情感反應。

  • 智能終端

智能終端可應用於小區物業管理,智能手錶、眼鏡,無人機等設備上,經過音視頻傳輸高效解鎖,撥通電話等進行實時音視頻通話。點對點的音視頻通信,可對智能終端實現自我控制、遠程控制、好友管理、及影像等功能,能夠遠程遙控進行佈防或者撤防,並記錄下全過程。智能終端將極大地改變人們將來的生活圖景,爲咱們的工做效率、生活便利性帶來了極大的提高,成爲咱們生活中不可或缺的一部分。
在這裏插入圖片描述

  • 移動執法和交通物流類

語音對講功能,頻道對講,一對一/一對多對講,適用於多級調動,應急指揮,可用於公安、交警、武警、軍隊、法院、監獄、城管、市場監管等。

多媒體對講功能,可實時視頻回傳,現場圖文視頻上報,圖文,視頻消息。適用於跨地區調度,位置管理,可用於鐵路、客運、出租、公共交通、物流運輸、港口等。

在這裏插入圖片描述

結語

anyRTC一直以來堅持以開發者爲先,並在持續努力爲開發者提供各類有價值的差別化服務,爲開發者提供更快、更好、更便捷的產品和服務。

anyRTC也會一直秉承着,認真,專業的精神,爲各位開發者和用戶提供優質的服務。

anyRTC官網​:https://www.anyrtc.io/

相關文章
相關標籤/搜索