├── .code.yml
├── .gitignore
├── Android
├── Demo
│ ├── app
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── assets
│ │ │ ├── img
│ │ │ │ ├── 1.jpg
│ │ │ │ ├── 2.jpg
│ │ │ │ ├── 3.jpg
│ │ │ │ └── xiaomi8.jpg
│ │ │ └── ppt
│ │ │ │ ├── test1.pptx
│ │ │ │ └── test2.pptx
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── tencent
│ │ │ │ └── tic
│ │ │ │ ├── core
│ │ │ │ ├── BoardManager.java
│ │ │ │ └── IMManager.java
│ │ │ │ └── demo
│ │ │ │ ├── KeyboardHeightObserver.java
│ │ │ │ ├── KeyboardHeightProvider.java
│ │ │ │ ├── TICSDKDemoApp.java
│ │ │ │ ├── TRTCGetUserIDAndUserSig.java
│ │ │ │ ├── TRTCHttpHelper.java
│ │ │ │ └── activities
│ │ │ │ ├── BaseActvity.java
│ │ │ │ ├── TICClassMainActivity.java
│ │ │ │ ├── TICClassManagerActivity.java
│ │ │ │ ├── TICLoginActivity.java
│ │ │ │ └── TICMenuDialog.java
│ │ │ └── res
│ │ │ ├── layout
│ │ │ ├── activity_class_ex.xml
│ │ │ ├── activity_login_layout.xml
│ │ │ ├── activity_manager_layout.xml
│ │ │ ├── dlg_setting.xml
│ │ │ ├── input_text_view.xml
│ │ │ └── popupwindow.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_icon.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_icon.png
│ │ │ ├── raw
│ │ │ └── config.json
│ │ │ ├── values
│ │ │ ├── arrays.xml
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ ├── styles.xml
│ │ │ └── themes.xml
│ │ │ └── xml
│ │ │ └── provider_paths.xml
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ └── settings.gradle
├── README.md
├── SDK
│ └── TEduBoardSdk_2.7.3.177.zip
├── 接入文档.md
└── 版本信息.md
├── README.md
├── SDK下载.md
├── Web
├── Demo
│ ├── .browserslistrc
│ ├── .env
│ ├── .env.dev-env
│ ├── .env.production
│ ├── .env.test-env
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── README.md
│ ├── babel.config.js
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ │ ├── favicon.ico
│ │ └── index.html
│ ├── src
│ │ ├── App.vue
│ │ ├── assets
│ │ │ ├── logo.png
│ │ │ └── logo.svg
│ │ ├── components
│ │ │ ├── Bottombar.vue
│ │ │ ├── ElementToolbar.vue
│ │ │ ├── Login.vue
│ │ │ ├── Rightbar.vue
│ │ │ ├── SelectBoxSettingDialog.vue
│ │ │ ├── Sketch.vue
│ │ │ ├── Toolbar.vue
│ │ │ ├── ToolbarDialog
│ │ │ │ ├── BackgroundDialog.vue
│ │ │ │ ├── CoursewareDialog.vue
│ │ │ │ ├── CustomGraphDialog.vue
│ │ │ │ ├── ElementDialog.vue
│ │ │ │ ├── FormulaEditorDialog.vue
│ │ │ │ ├── MediaDialog.vue
│ │ │ │ ├── SettingDialog.vue
│ │ │ │ └── WatermarkDialog.vue
│ │ │ └── Topbar.vue
│ │ ├── config
│ │ │ └── index.js
│ │ ├── main.js
│ │ ├── plugins
│ │ │ └── vuetify.js
│ │ ├── router
│ │ │ └── index.js
│ │ ├── signal
│ │ │ └── Signal.js
│ │ ├── store
│ │ │ └── index.js
│ │ ├── util
│ │ │ ├── TiwTranscode.js
│ │ │ ├── Util.js
│ │ │ └── lib-generate-usersig.min.js
│ │ └── views
│ │ │ ├── Login.vue
│ │ │ └── Main.vue
│ └── vue.config.js
├── 接入文档.md
└── 版本信息.md
├── Windows
├── Demo
│ ├── BoardDlg.cpp
│ ├── BoardDlg.h
│ ├── TIC
│ │ ├── HttpClient.cpp
│ │ ├── HttpClient.h
│ │ ├── TICManager.cpp
│ │ ├── TICManager.h
│ │ ├── TICManagerImpl.cpp
│ │ ├── TICManagerImpl.h
│ │ └── jsoncpp
│ │ │ ├── json-forwards.h
│ │ │ ├── json.h
│ │ │ └── jsoncpp.cpp
│ ├── TICDemo.cpp
│ ├── TICDemo.h
│ ├── TICDemo.rc
│ ├── TICDemo.sln
│ ├── TICDemo.vcxproj
│ ├── TICDemo.vcxproj.filters
│ ├── TICDemoDlg.cpp
│ ├── TICDemoDlg.h
│ ├── VideoDlg.cpp
│ ├── VideoDlg.h
│ ├── res
│ │ ├── TICDemo.ico
│ │ └── TICDemo.rc2
│ ├── resource.h
│ ├── stdafx.cpp
│ ├── stdafx.h
│ └── targetver.h
├── README.md
├── SDK
│ └── update_tools
│ │ ├── libeay32.dll
│ │ ├── libiconv2.dll
│ │ ├── libintl3.dll
│ │ ├── libssl32.dll
│ │ ├── unzip.exe
│ │ ├── unzip32.dll
│ │ ├── update.bat
│ │ └── wget.exe
├── 接入文档.md
└── 版本信息.md
├── iOS
├── Demo
│ └── TICDemo
│ │ ├── Podfile
│ │ ├── TICDemo.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ ├── TICDemo.xcworkspace
│ │ └── contents.xcworkspacedata
│ │ └── TICDemo
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ └── icon.png
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── BoardManager.h
│ │ ├── BoardManager.m
│ │ ├── ClassroomJoinViewController.h
│ │ ├── ClassroomJoinViewController.m
│ │ ├── ClassroomViewController.h
│ │ ├── ClassroomViewController.m
│ │ ├── Config
│ │ ├── TICConfig.h
│ │ ├── TICConfig.m
│ │ └── config.json
│ │ ├── IMManager.h
│ │ ├── IMManager.m
│ │ ├── Info.plist
│ │ ├── JMToast
│ │ ├── JMLoadingHUD.h
│ │ ├── JMLoadingHUD.m
│ │ ├── JMToast.h
│ │ ├── JMToast.m
│ │ └── MBProgressHUD
│ │ │ ├── MBProgressHUD.h
│ │ │ └── MBProgressHUD.m
│ │ ├── MenuTableViewController.h
│ │ ├── MenuTableViewController.m
│ │ ├── PickSheetView.h
│ │ ├── PickSheetView.m
│ │ ├── PickSheetView.xib
│ │ ├── TICDemo.pch
│ │ ├── TableSheetView.h
│ │ ├── TableSheetView.m
│ │ ├── TableSheetView.xib
│ │ ├── UIViewController+Utils.h
│ │ ├── UIViewController+Utils.m
│ │ ├── ViewController.h
│ │ ├── ViewController.m
│ │ └── main.m
├── README.md
├── SDK
│ └── TEduBoard_2.7.3.119.zip
├── 接入文档.md
└── 版本信息.md
├── macOS
├── Demo
│ └── TICDemo_Mac
│ │ ├── Podfile
│ │ ├── TICDemo_Mac.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ ├── TICDemo_Mac.xcworkspace
│ │ └── contents.xcworkspacedata
│ │ └── TICDemo_Mac
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ └── icon128.png
│ │ ├── Contents.json
│ │ └── surfboard.imageset
│ │ │ ├── Contents.json
│ │ │ └── surfboard@2x.png
│ │ ├── Base.lproj
│ │ └── Main.storyboard
│ │ ├── BoardManager.h
│ │ ├── BoardManager.m
│ │ ├── ColorPickViewController.h
│ │ ├── ColorPickViewController.m
│ │ ├── Config
│ │ ├── TICConfig.h
│ │ ├── TICConfig.m
│ │ └── config.json
│ │ ├── IMManager.h
│ │ ├── IMManager.m
│ │ ├── Info.plist
│ │ ├── Resource
│ │ └── 欢迎新同学.ppt
│ │ ├── TICDemo_Mac.entitlements
│ │ ├── ThumbItem.h
│ │ ├── ThumbItem.m
│ │ ├── ThumbItem.xib
│ │ ├── ViewController.h
│ │ ├── ViewController.m
│ │ └── main.m
├── README.md
├── SDK
│ └── TEduBoard_Mac_2.7.3.119.zip
├── 接入文档.md
└── 版本信息.md
├── 小程序
├── README.md
├── webrtc-room + canvas
│ ├── .gitignore
│ ├── README.md
│ ├── cloudfunctions
│ │ └── login
│ │ │ └── index.js
│ ├── miniprogram
│ │ ├── app.js
│ │ ├── app.json
│ │ ├── app.wxss
│ │ ├── components
│ │ │ ├── board-component
│ │ │ │ ├── board-component.js
│ │ │ │ ├── board-component.json
│ │ │ │ ├── board-component.wxml
│ │ │ │ ├── board-component.wxss
│ │ │ │ └── libs
│ │ │ │ │ └── TEduBoard_miniprogram.min.js
│ │ │ ├── elk-component
│ │ │ │ ├── ELKReport.js
│ │ │ │ └── md5.min.js
│ │ │ ├── event
│ │ │ │ ├── BoardListener.js
│ │ │ │ ├── EventListener.js
│ │ │ │ ├── MessageListener.js
│ │ │ │ └── StatusListener.js
│ │ │ ├── libs
│ │ │ │ ├── circular-json.js
│ │ │ │ └── moment.js
│ │ │ ├── tic-component
│ │ │ │ ├── tic-component.js
│ │ │ │ ├── tic-component.json
│ │ │ │ └── tic-component.wxml
│ │ │ ├── trtc-room
│ │ │ │ ├── common
│ │ │ │ │ └── constants.js
│ │ │ │ ├── controller
│ │ │ │ │ └── user-controller.js
│ │ │ │ ├── libs
│ │ │ │ │ ├── mta_analysis.js
│ │ │ │ │ └── tim-wx.js
│ │ │ │ ├── model
│ │ │ │ │ ├── pusher.js
│ │ │ │ │ ├── stream.js
│ │ │ │ │ └── user.js
│ │ │ │ ├── template
│ │ │ │ │ ├── custom
│ │ │ │ │ │ ├── custom.wxml
│ │ │ │ │ │ └── custom.wxss
│ │ │ │ │ └── custom_canvas
│ │ │ │ │ │ ├── custom_canvas.wxml
│ │ │ │ │ │ └── custom_canvas.wxss
│ │ │ │ ├── trtc-room.js
│ │ │ │ ├── trtc-room.json
│ │ │ │ ├── trtc-room.wxml
│ │ │ │ ├── trtc-room.wxss
│ │ │ │ └── utils
│ │ │ │ │ ├── compare-version.js
│ │ │ │ │ ├── environment.js
│ │ │ │ │ └── event.js
│ │ │ └── webim-component
│ │ │ │ └── webim-component.js
│ │ ├── miniprogram_npm
│ │ │ └── tim-wx-sdk
│ │ │ │ ├── index.js
│ │ │ │ └── index.js.map
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── pages
│ │ │ ├── main
│ │ │ │ ├── main.js
│ │ │ │ ├── main.json
│ │ │ │ ├── main.wxml
│ │ │ │ └── main.wxss
│ │ │ └── tic
│ │ │ │ ├── account.js
│ │ │ │ └── room_canvas
│ │ │ │ ├── index
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ │ └── room
│ │ │ │ ├── room.js
│ │ │ │ ├── room.json
│ │ │ │ ├── room.wxml
│ │ │ │ └── room.wxss
│ │ ├── resources
│ │ │ └── images
│ │ │ │ ├── board1.png
│ │ │ │ ├── board2.png
│ │ │ │ ├── fullscreen.png
│ │ │ │ ├── icon-clear.png
│ │ │ │ ├── icon-curve.png
│ │ │ │ ├── icon-eraser.png
│ │ │ │ ├── icon-line.png
│ │ │ │ ├── icon-next.png
│ │ │ │ ├── icon-prev.png
│ │ │ │ ├── icon-rect.png
│ │ │ │ ├── icon-upload.png
│ │ │ │ ├── logo.png
│ │ │ │ ├── smallscreen.png
│ │ │ │ └── tic.png
│ │ ├── sitemap.json
│ │ └── static
│ │ │ ├── css
│ │ │ └── icon.wxss
│ │ │ └── image
│ │ │ ├── home-bg.png
│ │ │ ├── icon-hand-hover.svg
│ │ │ ├── icon-hand.svg
│ │ │ ├── icon-logo.svg
│ │ │ ├── icon-setting-hover.svg
│ │ │ ├── icon-setting.svg
│ │ │ ├── icon-share-hover.svg
│ │ │ ├── icon-share.svg
│ │ │ ├── icon-signal-1@2x.png
│ │ │ ├── icon-signal-2@2x.png
│ │ │ ├── icon-signal-3@2x.png
│ │ │ ├── icon-student.svg
│ │ │ ├── icon-teacher.svg
│ │ │ ├── icon-voice-actived.svg
│ │ │ ├── icon-voice-disabled-hover.svg
│ │ │ ├── icon-voice.svg
│ │ │ ├── record-hover@2x.png
│ │ │ ├── record@2x.png
│ │ │ ├── tencentyun-icon.png
│ │ │ ├── tool
│ │ │ ├── icon-add-hover.png
│ │ │ ├── icon-add.png
│ │ │ ├── icon-brush-hover.png
│ │ │ ├── icon-brush.png
│ │ │ ├── icon-choose-hover.png
│ │ │ ├── icon-choose.png
│ │ │ ├── icon-choose2-hover.png
│ │ │ ├── icon-choose2.png
│ │ │ ├── icon-rubber-hover.png
│ │ │ ├── icon-rubber.png
│ │ │ ├── icon-text-hover.png
│ │ │ └── icon-text.png
│ │ │ ├── 麦克风@2x.png
│ │ │ ├── 麦克风备份 5@2x.png
│ │ │ ├── 麦克风备份 6@2x.png
│ │ │ └── 麦克风备份@2x.png
│ └── project.config.json
├── webrtc-room + webview
│ ├── webview链接页面源码
│ │ └── webview-source
│ │ │ ├── css
│ │ │ ├── img
│ │ │ │ ├── clear.png
│ │ │ │ ├── clear1.png
│ │ │ │ ├── cleardraw.png
│ │ │ │ ├── default.png
│ │ │ │ ├── default@2x.png
│ │ │ │ ├── eraser.png
│ │ │ │ ├── fill.png
│ │ │ │ ├── index-sound.svg
│ │ │ │ ├── index_bg.png
│ │ │ │ ├── index_logox1.png
│ │ │ │ ├── index_logox2.png
│ │ │ │ ├── left.png
│ │ │ │ ├── logo.png
│ │ │ │ ├── logo@2x.png
│ │ │ │ ├── rec_select.png
│ │ │ │ ├── right.png
│ │ │ │ ├── student-ft
│ │ │ │ │ ├── full-hover.png
│ │ │ │ │ ├── full.png
│ │ │ │ │ ├── head-hover.png
│ │ │ │ │ ├── head-refuse.png
│ │ │ │ │ ├── not-full-hover.png
│ │ │ │ │ └── not-full.png
│ │ │ │ ├── voice.png
│ │ │ │ └── voice@2x.png
│ │ │ ├── mini-class.css
│ │ │ ├── sprite
│ │ │ │ ├── mini-class-201801301143.png
│ │ │ │ └── mini-class-201801301143.svg
│ │ │ └── vue-toastr-2.min.css
│ │ │ ├── js
│ │ │ ├── account_dev.js
│ │ │ └── miniprogram.js
│ │ │ ├── libs
│ │ │ ├── cos-js-sdk-v5.min.js
│ │ │ ├── thirdpart
│ │ │ │ ├── elementui
│ │ │ │ │ ├── fonts
│ │ │ │ │ │ └── element-icons.woff
│ │ │ │ │ ├── index.css
│ │ │ │ │ └── index.js
│ │ │ │ ├── purl.js
│ │ │ │ ├── vconsole.min.js
│ │ │ │ └── vue.js
│ │ │ ├── tim-js.js
│ │ │ └── trtc.js
│ │ │ └── miniprogram.html
│ └── 小程序源码
│ │ ├── cloudfunctions
│ │ └── login
│ │ │ └── index.js
│ │ ├── miniprogram
│ │ ├── app.js
│ │ ├── app.json
│ │ ├── app.wxss
│ │ ├── components
│ │ │ └── trtc-room
│ │ │ │ ├── common
│ │ │ │ └── constants.js
│ │ │ │ ├── controller
│ │ │ │ └── user-controller.js
│ │ │ │ ├── libs
│ │ │ │ ├── mta_analysis.js
│ │ │ │ └── tim-wx.js
│ │ │ │ ├── model
│ │ │ │ ├── pusher.js
│ │ │ │ ├── stream.js
│ │ │ │ └── user.js
│ │ │ │ ├── template
│ │ │ │ ├── custom
│ │ │ │ │ ├── custom.wxml
│ │ │ │ │ └── custom.wxss
│ │ │ │ └── custom_canvas
│ │ │ │ │ ├── custom_canvas.wxml
│ │ │ │ │ └── custom_canvas.wxss
│ │ │ │ ├── trtc-room.js
│ │ │ │ ├── trtc-room.json
│ │ │ │ ├── trtc-room.wxml
│ │ │ │ ├── trtc-room.wxss
│ │ │ │ └── utils
│ │ │ │ ├── compare-version.js
│ │ │ │ ├── environment.js
│ │ │ │ └── event.js
│ │ ├── miniprogram_npm
│ │ │ └── tim-wx-sdk
│ │ │ │ ├── index.js
│ │ │ │ └── index.js.map
│ │ ├── node_modules
│ │ │ └── tim-wx-sdk
│ │ │ │ ├── README.md
│ │ │ │ ├── package.json
│ │ │ │ └── tim-wx.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── pages
│ │ │ └── tic
│ │ │ │ ├── account.js
│ │ │ │ └── room_webview
│ │ │ │ ├── index
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ │ └── room
│ │ │ │ ├── room.js
│ │ │ │ ├── room.json
│ │ │ │ ├── room.wxml
│ │ │ │ └── room.wxss
│ │ ├── resources
│ │ │ └── images
│ │ │ │ ├── board1.png
│ │ │ │ ├── board2.png
│ │ │ │ ├── fullscreen.png
│ │ │ │ ├── icon-clear.png
│ │ │ │ ├── icon-curve.png
│ │ │ │ ├── icon-eraser.png
│ │ │ │ ├── icon-line.png
│ │ │ │ ├── icon-next.png
│ │ │ │ ├── icon-prev.png
│ │ │ │ ├── icon-rect.png
│ │ │ │ ├── icon-upload.png
│ │ │ │ ├── logo.png
│ │ │ │ ├── smallscreen.png
│ │ │ │ └── tic.png
│ │ ├── sitemap.json
│ │ └── static
│ │ │ ├── css
│ │ │ └── icon.wxss
│ │ │ └── image
│ │ │ ├── home-bg.png
│ │ │ ├── icon-hand-hover.svg
│ │ │ ├── icon-hand.svg
│ │ │ ├── icon-logo.svg
│ │ │ ├── icon-setting-hover.svg
│ │ │ ├── icon-setting.svg
│ │ │ ├── icon-share-hover.svg
│ │ │ ├── icon-share.svg
│ │ │ ├── icon-signal-1@2x.png
│ │ │ ├── icon-signal-2@2x.png
│ │ │ ├── icon-signal-3@2x.png
│ │ │ ├── icon-student.svg
│ │ │ ├── icon-teacher.svg
│ │ │ ├── icon-voice-actived.svg
│ │ │ ├── icon-voice-disabled-hover.svg
│ │ │ ├── icon-voice.svg
│ │ │ ├── record-hover@2x.png
│ │ │ ├── record@2x.png
│ │ │ ├── tencentyun-icon.png
│ │ │ ├── tool
│ │ │ ├── icon-add-hover.png
│ │ │ ├── icon-add.png
│ │ │ ├── icon-brush-hover.png
│ │ │ ├── icon-brush.png
│ │ │ ├── icon-choose-hover.png
│ │ │ ├── icon-choose.png
│ │ │ ├── icon-choose2-hover.png
│ │ │ ├── icon-choose2.png
│ │ │ ├── icon-rubber-hover.png
│ │ │ ├── icon-rubber.png
│ │ │ ├── icon-text-hover.png
│ │ │ └── icon-text.png
│ │ │ ├── 麦克风@2x.png
│ │ │ ├── 麦克风备份 5@2x.png
│ │ │ ├── 麦克风备份 6@2x.png
│ │ │ └── 麦克风备份@2x.png
│ │ └── project.config.json
├── 互动课堂接入文档.md
├── 互动课堂接入文档webrtcroom+canvas方式.md
└── 版本信息.md
├── 开通指南.md
└── 接口文档.md
/.code.yml:
--------------------------------------------------------------------------------
1 | #-----------------------------
2 | #该文件整理完善可参考:https://iwiki.oa.tencent.com/pages/viewpage.action?pageId=113587682
3 |
4 | #-----------------------------
5 |
6 | #必选项,定义项目分支命名规范,可以根据业务实际分支类型,填写相应的命名规范,对不适合的分支项可以删除
7 | #所有分支命名推荐统一使用小写字母
8 | branch:
9 | #主干,推荐命名为master
10 | trunk_name: "master"
11 |
12 | #必选项,用于说明仓库对应发布单元发布制品以及依赖制品配置文件信息
13 | artifact:
14 | #大仓的情况,可能不同目录是不同的发布单元,下面path指定代码仓库里相应发布单元目录
15 | #若整个仓库代码是一个发布单元,该path为当前目录
16 | - path: "/"
17 | #发布单元名称,如AndroidQQ、epc-demo
18 | artifact_name: "TIC"
19 | #发布单元类型,可选类型字段有,移动端/PC端/后台单体应用/后台微服务/web/sdk/lib/框架
20 | #比如发布单元为腾讯视频Android客户端,则发布单元类型为如下样例 移动端
21 | artifact_type: "框架"
22 |
23 | #可选项,需要定义区分不同类别代码时才需要配置source
24 | source:
25 | # 文件或目录可使用绝对或相对路径,绝对路径按代码库根目录计算,以/开头。相对路径按.code.yml所在目录来判断,以 ./开头。
26 | # 提供产品代码库中编写的测试代码存放目录或文件名格式,以便后续代码统计环节进行排除等特殊处理
27 | test_source:
28 | #用于匹配文件; 匹配方式为正则表达式
29 | filepath_regex:
30 | - "/Windows/Demo/.*"
31 | - "/Android/Demo/.*"
32 | - "/iOS/Demo/.*"
33 | - "/macOS/Demo/.*"
34 | - "/Web/Demo/.*"
35 | - "/小程序/.*"
36 |
37 | # 提供产品代码库中直接以源码形式存在的第三方代码目录或代码文件名的正则表达。
38 | # 此处备注的第三方代码在后续统计代码量环节会被排除,若代码库中不存在需要排除的第三方代码,该项配置标识可为空
39 | third_party_source:
40 | #第三方代码文件的正则表达式,若无统一标识格式,可以指定具体目录,样例可参考test_source举例
41 | filepath_regex:
42 | - "/Windows/SDK/TIC/jsoncpp/.*"
43 | - "/Windows/SDK/Updater/.*"
44 | auto_generate_source:
45 | filepath_regex: ["/Web/SDK/TIC/dist/.*"]
46 |
47 | file:
48 | - path: /Windows/.*
49 | owners:
50 | - alderzhang
51 | owner_rule: 1
52 | - path: /iOS/.*
53 | owners:
54 | - kennethmiao
55 | owner_rule: 1
56 | - path: /macOS/.*
57 | owners:
58 | - kennethmiao
59 | owner_rule: 1
60 | - path: /Android/.*
61 | owners:
62 | - gregzeng
63 | owner_rule: 1
64 | - path: /Web/.*
65 | owners:
66 | - rackeyyang
67 | owner_rule: 1
68 | - path: /小程序/.*
69 | owners:
70 | - rackeyyang
71 | owner_rule: 1
72 |
73 | log-helper:
74 | auto-correct: true
75 | correct-angular: true
76 | correct-tapd: true
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | Android/Demo/.gradle
2 | Android/Demo/.idea
3 | Android/Demo/build
4 | iOS/Demo/TICDemo/Pods/Pods.xcodeproj/xcuserdata
5 | iOS/Demo/TICDemo/Pods
6 | macOS/Demo/TICDemo_Mac/Pods
7 | iOS/Demo/TICDemo/TICDemo.xcodeproj/xcuserdata
8 | iOS/Demo/TICDemo/TICDemo.xcworkspace/xcuserdata
9 | macOS/Demo/TICDemo_Mac/TICDemo_Mac.xcodeproj/xcuserdata
10 | macOS/Demo/TICDemo_Mac/TICDemo_Mac.xcworkspace/xcuserdata
11 | macOS/Demo/TICDemo_Mac/TICDemo_Mac.xcworkspace/xcshareddata
12 | Web/Demo/libs/TEduBoard.min.js
13 | *.iml
14 | local.properties
15 | Podfile.lock
16 | iOS/Demo/TICDemo/TICDemo.xcworkspace/xcshareddata
17 | iOS/Demo/TICDemo/TICDemo.xcodeproj/project.xcworkspace/xcshareddata
18 | .idea
19 | *.user
20 | .DS_Store
21 | Windows/Demo/.vs
22 | Windows/Demo/Release
23 | Windows/Demo/Debug
24 | Windows/SDK/__MACOSX
25 | Windows/SDK/TEduBoard
26 | Windows/SDK/TIM
27 | Windows/SDK/TRTC
28 | Windows/SDK/Temp
--------------------------------------------------------------------------------
/Android/Demo/app/.gitignore:
--------------------------------------------------------------------------------
1 | build/*
2 |
--------------------------------------------------------------------------------
/Android/Demo/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 28
5 | buildToolsVersion "28.0.3"
6 |
7 | signingConfigs {
8 | release {
9 | storeFile file("$System.env.KEYSTORE_PATH")
10 | storePassword "$System.env.STOREPASS"
11 | keyAlias "$System.env.ALIAS"
12 | keyPassword "$System.env.KEYPASS"
13 | }
14 | }
15 |
16 | packagingOptions {
17 | exclude '*.apk'
18 | }
19 |
20 | defaultConfig {
21 | applicationId "com.tencent.tic.demo"
22 | minSdkVersion 19
23 | targetSdkVersion 28
24 | versionCode 2
25 | versionName "$System.env.MajorVersion-$System.env.MinorVersion-$System.env.BuildNo"
26 | multiDexEnabled false
27 | // ndk {
28 | // abiFilters 'armeabi-v7a'
29 | // }
30 | }
31 | buildTypes {
32 | release {
33 | minifyEnabled false
34 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
35 | //signingConfig signingConfigs.release
36 | }
37 | }
38 |
39 | lintOptions {
40 | abortOnError false
41 | }
42 | }
43 | dependencies {
44 | implementation fileTree(dir: 'libs', include: ['*.aar'])
45 |
46 | implementation 'androidx.appcompat:appcompat:1.0.0'
47 | implementation "com.squareup.okhttp3:okhttp:4.9.3"
48 |
49 | implementation 'com.tencent.imsdk:imsdk-plus:6.0.1992' //5.4.666
50 |
51 | implementation 'com.tencent.edu:TEduBoardSdk:2.7.3.177'
52 |
53 |
54 | }
55 |
56 |
57 |
--------------------------------------------------------------------------------
/Android/Demo/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in D:\MyProgram\Android\SDK/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 | -keep class com.tencent.**{*;}
19 | -dontwarn com.tencent.**
20 |
21 | -keep class tencent.**{*;}
22 | -dontwarn tencent.**
23 |
24 | -keep class qalsdk.**{*;}
25 | -dontwarn qalsdk.**
26 |
27 | -keep class com.tencent.imsdk.** { *; }
28 |
29 | -keep class leo.android.cglib.** { *; }
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
35 |
36 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/assets/img/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Android/Demo/app/src/main/assets/img/1.jpg
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/assets/img/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Android/Demo/app/src/main/assets/img/2.jpg
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/assets/img/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Android/Demo/app/src/main/assets/img/3.jpg
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/assets/img/xiaomi8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Android/Demo/app/src/main/assets/img/xiaomi8.jpg
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/assets/ppt/test1.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Android/Demo/app/src/main/assets/ppt/test1.pptx
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/assets/ppt/test2.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Android/Demo/app/src/main/assets/ppt/test2.pptx
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/java/com/tencent/tic/demo/KeyboardHeightObserver.java:
--------------------------------------------------------------------------------
1 | package com.tencent.tic.demo;
2 |
3 | /**
4 | * The observer that will be notified when the height of
5 | * the keyboard has changed
6 | */
7 | public interface KeyboardHeightObserver {
8 |
9 | /**
10 | * Called when the keyboard height has changed, 0 means keyboard is closed,
11 | * >= 1 means keyboard is opened.
12 | *
13 | * @param height The height of the keyboard in pixels
14 | * @param orientation The orientation either: Configuration.ORIENTATION_PORTRAIT or
15 | * Configuration.ORIENTATION_LANDSCAPE
16 | */
17 | void onKeyboardHeightChanged(int height, int orientation);
18 | }
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/java/com/tencent/tic/demo/TICSDKDemoApp.java:
--------------------------------------------------------------------------------
1 | package com.tencent.tic.demo;
2 |
3 | import android.app.Application;
4 |
5 | import com.tencent.tic.core.IMManager;
6 |
7 | /**
8 | * Created by ericczhuangzhang on 2017/9/29.
9 | */
10 | public class TICSDKDemoApp extends Application {
11 | private final static String TAG = "TICSDKDemoApp";
12 | private TRTCGetUserIDAndUserSig mUserInfoLoader;
13 | public TRTCGetUserIDAndUserSig getConfig() {
14 | return mUserInfoLoader;
15 | }
16 |
17 | @Override
18 | public void onCreate() {
19 | super.onCreate();
20 |
21 | mUserInfoLoader = new TRTCGetUserIDAndUserSig(this);
22 | IMManager.getInstance().initSDK(this,mUserInfoLoader.getSdkAppIdFromConfig());
23 | }
24 |
25 |
26 | public abstract class Test implements testIMEListener{
27 | @Override
28 | public void callTest() {
29 |
30 | }
31 | }
32 |
33 | public interface testIMEListener{
34 | void callTest();
35 | }
36 |
37 | @Override
38 | public void onTerminate() {
39 | IMManager.getInstance().unInitSDK();
40 | super.onTerminate();
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/res/layout/input_text_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
29 |
30 |
36 |
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/res/layout/popupwindow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/res/mipmap-hdpi/ic_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Android/Demo/app/src/main/res/mipmap-hdpi/ic_icon.png
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/res/mipmap-xhdpi/ic_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Android/Demo/app/src/main/res/mipmap-xhdpi/ic_icon.png
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/res/values/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - 铅笔
5 | - 橡皮
6 | - 激光教鞭
7 | - 直线
8 | - 空心椭圆
9 | - 空心矩形
10 | - 实心椭圆
11 | - 实心矩形
12 | - 文本
13 |
14 |
15 |
16 | - 腾讯云
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | TICSDK-TRTC Demo
3 | POS
4 | 建议按文档说明发邮件申请体验账号,默认账号使用过程中可能由于多个体验者登录同一个账号导致互踢
5 | 互动课堂
6 | 互动课堂是基于腾讯互动直播课堂SDK的课堂应用,专注于课堂场景的解决方案
7 | 加入课堂
8 | 创建课堂
9 | 登录
10 | 加入课堂
11 | 课堂号
12 | 使用个人名称加入课堂
13 | 昵称
14 | 自动开启麦克风
15 | 自动打开摄像头
16 | 创建课堂
17 | 切换摄像头
18 | 摄像头
19 | 麦克风
20 | ]]>
21 |
22 | 正在启动任务
23 | 正在注册帐号
24 | 正在登录帐号
25 | 正在创建课堂
26 | 正在加入课堂
27 |
28 | 系统消息:
29 | %s加入课堂
30 | %s退出课堂
31 |
32 |
33 | 提示
34 | 等待
35 | group
36 | c2c
37 |
38 |
39 | 发送
40 | 取消
41 | 确认
42 |
43 |
44 |
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Android/Demo/app/src/main/res/xml/provider_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/Android/Demo/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | mavenCentral()
6 | jcenter()
7 | // maven { url 'http://maven.oa.com/nexus/content/repositories/android' }
8 | // maven { url 'http://maven.oa.com/nexus/service/local/repositories/jcenter/content' }
9 | google()
10 | // maven { url 'https://dl.bintray.com/tencentqcloudterminal/maven' }
11 | }
12 | dependencies {
13 | classpath 'com.android.tools.build:gradle:3.5.1'
14 |
15 | // NOTE: Do not place your application dependencies here; they belong
16 | // in the individual module build.gradle files
17 | }
18 | }
19 |
20 | allprojects {
21 | repositories {
22 | mavenCentral()
23 | jcenter()
24 | // maven { url 'http://maven.oa.com/nexus/service/local/repositories/thirdparty/content/' }
25 | // maven { url 'http://maven.oa.com/nexus/content/repositories/android' }
26 | // maven { url 'http://maven.oa.com/nexus/service/local/repositories/jcenter/content' }
27 | google()
28 | }
29 | }
30 |
31 | task clean(type: Delete) {
32 | delete rootProject.buildDir
33 | }
34 |
--------------------------------------------------------------------------------
/Android/Demo/gradle.properties:
--------------------------------------------------------------------------------
1 | ## Project-wide Gradle settings.
2 | #
3 | # For more details on how to configure your build environment visit
4 | # http://www.gradle.org/docs/current/userguide/build_environment.html
5 | #
6 | # Specifies the JVM arguments used for the daemon process.
7 | # The setting is particularly useful for tweaking memory settings.
8 | # Default value: -Xmx1024m -XX:MaxPermSize=256m
9 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
10 | #
11 | # When configured, Gradle will run in incubating parallel mode.
12 | # This option should only be used with decoupled projects. More details, visit
13 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
14 | # org.gradle.parallel=true
15 | #Fri Jun 29 15:12:02 CST 2018
16 | #systemProp.https.proxyPort=8080
17 | #systemProp.http.proxyHost=web-proxy.oa.com
18 | #systemProp.https.proxyHost=web-proxy.oa.com
19 | #systemProp.http.proxyPort=8080
20 | android.enableJetifier=true
21 | android.useAndroidX=true
22 | android.enableAapt2=false
23 |
--------------------------------------------------------------------------------
/Android/Demo/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Android/Demo/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/Android/Demo/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed Feb 03 20:10:08 CST 2021
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
7 |
--------------------------------------------------------------------------------
/Android/Demo/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = 'TICSDK-Android'
--------------------------------------------------------------------------------
/Android/README.md:
--------------------------------------------------------------------------------
1 | 本文主要介绍如何快速运行互动课堂android版本Demo。
2 |
3 | ## 开发环境
4 |
5 | - Java sdk 1.7+
6 | - Android Studio 2.8+
7 | - Android 4.4 以上的真机
8 | - 确定开发机能够联网;
9 |
10 | ## 运行Demo
11 |
12 | - 使用Android Studio打开工程目录Demo;
13 | - 进行同步gradle
14 | - 编译运行
15 |
16 |
--------------------------------------------------------------------------------
/Android/SDK/TEduBoardSdk_2.7.3.177.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Android/SDK/TEduBoardSdk_2.7.3.177.zip
--------------------------------------------------------------------------------
/SDK下载.md:
--------------------------------------------------------------------------------
1 |
2 | | 所属平台 | Demo 源码 | 互动白板 | 实时音视频 | 即时通信 |
3 | |:-:|:-:|:-:|:-:|:-:|
4 | |Android|[点击下载](https://demo.qcloudtiw.com/android/TICDemo.zip)|[点击下载](https://sdk.qcloudtiw.com/android/TEduBoardSdk_2.7.7.194.zip)|[点击前往](https://cloud.tencent.com/document/product/647/32689)|[点击前往](https://cloud.tencent.com/document/product/269/36887)|
5 | |iOS|[点击下载](https://demo.qcloudtiw.com/ios/TICDemo.zip)|[点击下载](https://sdk.qcloudtiw.com/ios/2.7.7.144/TEduBoard_2.7.7.144.zip)|[点击前往](https://cloud.tencent.com/document/product/647/32689)|[点击前往](https://cloud.tencent.com/document/product/269/36887)|
6 | |Windows|[点击下载](https://demo.qcloudtiw.com/win/src/tic_source.zip)|[点击下载](https://sdk.qcloudtiw.com/win32/sdk_bin_2.7.7.278.zip)|[点击前往](https://cloud.tencent.com/document/product/647/32689)|[点击前往](https://cloud.tencent.com/document/product/269/36887)|
7 | |macOS|[点击下载](https://demo.qcloudtiw.com/mac/src/TICDemo_Mac.zip)|[点击下载](https://sdk.qcloudtiw.com/mac/2.7.7.144/TEduBoard_Mac_2.7.7.144.zip)|[点击前往](https://cloud.tencent.com/document/product/647/32689)|[点击前往](https://cloud.tencent.com/document/product/269/36887)|
8 | |Web|[点击下载](https://demo.qcloudtiw.com/web/latest/web-demo.zip)|[点击下载](https://demo.qcloudtiw.com/web/latest/web-demo.zip)|[点击前往](https://cloud.tencent.com/document/product/647/32689)|[点击前往](https://cloud.tencent.com/document/product/269/36887)|
9 | |小程序|[点击下载](https://demo.qcloudtiw.com/wx/小程序-canvas.zip)|[点击下载](https://sdk.qcloudtiw.com/wx/board-component_2.4.7.zip)|[点击前往](https://cloud.tencent.com/document/product/647/32689)|[点击前往](https://cloud.tencent.com/document/product/269/36887)|
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Web/Demo/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 | not dead
4 |
--------------------------------------------------------------------------------
/Web/Demo/.env:
--------------------------------------------------------------------------------
1 | publicPath=/
2 | NODE_ENV=development
--------------------------------------------------------------------------------
/Web/Demo/.env.dev-env:
--------------------------------------------------------------------------------
1 | publicPath=/
2 | NODE_ENV=development
--------------------------------------------------------------------------------
/Web/Demo/.env.production:
--------------------------------------------------------------------------------
1 | publicPath=/web/latest/
2 | NODE_ENV=production
--------------------------------------------------------------------------------
/Web/Demo/.env.test-env:
--------------------------------------------------------------------------------
1 | publicPath=/web/env_#PUBLISH_ENV#/#VERSION#/
2 | NODE_ENV=development
--------------------------------------------------------------------------------
/Web/Demo/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | browser: true,
5 | node: true,
6 | es6: true,
7 | },
8 | extends: [
9 | 'plugin:vue/essential',
10 | 'eslint:recommended',
11 | ],
12 | parser: 'vue-eslint-parser',
13 | parserOptions: {
14 | // parser: 'babel-eslint',
15 | ecmaVersion: 2020,
16 | sourceType: 'module',
17 | },
18 | rules: {
19 | 'linebreak-style': [0, 'error', 'windows'],
20 | 'no-async-promise-executor': 'off',
21 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
22 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
23 | },
24 | globals: {
25 | TEduBoard: true,
26 | },
27 | };
28 |
--------------------------------------------------------------------------------
/Web/Demo/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/Web/Demo/README.md:
--------------------------------------------------------------------------------
1 | # tiw-web
2 |
3 | ## 项目安装
4 | ```
5 | npm install
6 | ```
7 |
8 | ### 项目运行
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### 项目打包
14 | ```
15 | npm run build
16 | ```
17 |
18 | ### 项目语法检查
19 | ```
20 | npm run lint
21 | ```
22 |
23 | ### 项目参数配置
24 | ```
25 | // 修改config/index.js
26 |
27 | export default {
28 | // 白板应用SdkAppId
29 | sdkAppId: 0,
30 | // 白板应用对应的密钥 https://cloud.tencent.com/document/product/1137/39907
31 | secretKey: '',
32 | // 白板应用签名过期时间(单位:秒)
33 | expireTime: 84600,
34 | // cos存储桶配置
35 | cosBucket: '',
36 | cosRegion: '',
37 | // 腾讯云账号API密钥(https://console.cloud.tencent.com/cam/capi)
38 | tencentSecretId: '',
39 | tencentSectetKey: '',
40 | // 发起转码请求服务端地址,参考 https://cloud.tencent.com/document/product/1137/40060
41 | createTranscodeUrl: '',
42 | // 查询转码进度服务端地址,参考 https://cloud.tencent.com/document/product/1137/40059
43 | describeTranscodeUrl: '',
44 | };
45 | ```
46 |
--------------------------------------------------------------------------------
/Web/Demo/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset',
4 | ['@babel/preset-env', {
5 | useBuiltIns: 'usage',
6 | corejs: 3,
7 | }],
8 | ],
9 | plugins: [
10 | ['@babel/plugin-transform-runtime', {
11 | corejs: 3,
12 | }],
13 | ],
14 | };
15 |
--------------------------------------------------------------------------------
/Web/Demo/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tiw-web",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve --open --port 5556",
7 | "build": "vue-cli-service build",
8 | "build:dev": "vue-cli-service build --mode dev-env",
9 | "build:test": "vue-cli-service build --mode test-env",
10 | "lint": "vue-cli-service lint"
11 | },
12 | "dependencies": {
13 | "core-js": "^3.6.5",
14 | "tim-js-sdk": "^2.22.1",
15 | "vue": "^2.6.11",
16 | "vue-router": "^3.2.0",
17 | "vue-toasted": "^1.1.28",
18 | "vuetify": "^2.6.9",
19 | "vuex": "^3.4.0"
20 | },
21 | "devDependencies": {
22 | "@babel/cli": "^7.13.16",
23 | "@babel/core": "^7.14.0",
24 | "@babel/plugin-transform-runtime": "^7.13.15",
25 | "@babel/preset-env": "^7.14.1",
26 | "@babel/runtime-corejs3": "^7.14.0",
27 | "@mdi/font": "^7.0.96",
28 | "@vue/cli-plugin-babel": "~4.5.0",
29 | "@vue/cli-plugin-eslint": "~4.5.0",
30 | "@vue/cli-plugin-router": "~4.5.0",
31 | "@vue/cli-plugin-vuex": "~4.5.0",
32 | "@vue/cli-service": "~4.5.0",
33 | "babel-eslint": "^10.1.0",
34 | "eslint": "^6.7.2",
35 | "eslint-plugin-vue": "^6.2.2",
36 | "less": "^3.0.4",
37 | "less-loader": "^5.0.0",
38 | "material-design-icons-iconfont": "^6.7.0",
39 | "sass": "^1.32.0",
40 | "sass-loader": "^10.0.0",
41 | "vue-cli-plugin-vuetify": "~2.4.0",
42 | "vue-eslint-parser": "^7.6.0",
43 | "vue-template-compiler": "^2.6.11",
44 | "vuetify-loader": "^1.7.0"
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Web/Demo/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Web/Demo/public/favicon.ico
--------------------------------------------------------------------------------
/Web/Demo/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Web/Demo/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
16 |
17 |
26 |
--------------------------------------------------------------------------------
/Web/Demo/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Web/Demo/src/assets/logo.png
--------------------------------------------------------------------------------
/Web/Demo/src/assets/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Web/Demo/src/components/ToolbarDialog/CustomGraphDialog.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 添加自定义图形
5 |
6 |
11 |
12 |
13 |
14 | 添加至列表
17 | 关闭
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Web/Demo/src/components/ToolbarDialog/FormulaEditorDialog.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Web/Demo/src/components/Topbar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ show ? "mdi-chevron-right" : "mdi-chevron-left" }}
6 |
7 |
8 |
9 | 房间号: {{ $store.state.classInfo.classId }}
10 |
11 | 用户ID: {{ $store.state.classInfo.userId }}
12 |
13 |
14 | SDK版本号:{{ window.teduBoard && window.teduBoard.version }}
15 |
16 |
17 |
18 | 当前文件:{{ $store.state.current.fileInfo.title }}
19 |
20 |
21 |
22 |
23 |
24 |
25 | mdi-power
26 |
27 |
28 | 退出
29 |
30 |
31 |
32 |
33 |
68 |
69 |
71 |
--------------------------------------------------------------------------------
/Web/Demo/src/config/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | // 白板应用SdkAppId
3 | sdkAppId: 0,
4 | // 白板应用对应的密钥 https://cloud.tencent.com/document/product/1137/39907
5 | secretKey: '', // 只建议在开发阶段使用,再生产环境请使用后端来下发userSig
6 | // 白板应用签名过期时间(单位:秒)
7 | expireTime: 84600,
8 |
9 | // ======================= 文档转码相关的配置 ======================
10 | // cos存储桶配置
11 | cosBucket: '',
12 | cosRegion: '',
13 | // 腾讯云账号API密钥(https://console.cloud.tencent.com/cam/capi)
14 | tencentSecretId: '', // 只建议在开发阶段使用,再生产环境请使用后端来下发token
15 | tencentSectetKey: '', // 只建议在开发阶段使用,再生产环境请使用后端来下发token
16 | // 发起转码请求服务端地址,参考 https://cloud.tencent.com/document/product/1137/40060
17 | createTranscodeUrl: '',
18 | // 查询转码进度服务端地址,参考 https://cloud.tencent.com/document/product/1137/40059
19 | describeTranscodeUrl: '',
20 | // ======================= 文档转码相关的配置 ======================
21 | };
22 |
--------------------------------------------------------------------------------
/Web/Demo/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import App from './App.vue';
3 | import router from './router';
4 | import store from './store';
5 | import vuetify from './plugins/vuetify';
6 | import Toasted from 'vue-toasted';
7 | Vue.use(Toasted, {
8 | position: 'top-center',
9 | duration: 2000,
10 | });
11 |
12 | Vue.config.productionTip = false;
13 |
14 | Vue.prototype.$EventBus = new Vue();
15 |
16 | Vue.prototype.TEduBoard = window.TEduBoard;
17 |
18 | new Vue({
19 | router,
20 | store,
21 | vuetify,
22 | render: h => h(App),
23 | }).$mount('#app');
24 |
--------------------------------------------------------------------------------
/Web/Demo/src/plugins/vuetify.js:
--------------------------------------------------------------------------------
1 | import '@mdi/font/css/materialdesignicons.css'; // Ensure you are using css-loader
2 | import 'material-design-icons-iconfont/dist/material-design-icons.css';
3 | import Vue from 'vue';
4 | import Vuetify from 'vuetify/lib/framework';
5 |
6 | Vue.use(Vuetify);
7 |
8 | export default new Vuetify({
9 | icons: {
10 | iconfont: 'mdi', // 默认值 - 仅用于展示目的
11 | },
12 | });
13 |
--------------------------------------------------------------------------------
/Web/Demo/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import VueRouter from 'vue-router';
3 | import Main from '../views/Main.vue';
4 | import store from '../store/index';
5 |
6 | Vue.use(VueRouter);
7 |
8 | const routes = [
9 | {
10 | path: '/',
11 | name: 'Main',
12 | component: Main,
13 | },
14 | {
15 | path: '/login',
16 | name: 'Login',
17 | component: () => import(/* webpackChunkName: "about" */ '../views/Login.vue'),
18 | },
19 | ];
20 |
21 | const router = new VueRouter({
22 | base: process.env.BASE_URL,
23 | routes,
24 | });
25 |
26 | router.beforeEach((to, from, next) => {
27 | const { classInfo } = store.state;
28 | if (to.path === '/login') {
29 | next();
30 | } else {
31 | if (classInfo && classInfo.sdkAppId && classInfo.userId && classInfo.userSig) {
32 | next();
33 | } else {
34 | next('/login');
35 | }
36 | }
37 | });
38 | export default router;
39 |
--------------------------------------------------------------------------------
/Web/Demo/src/util/Util.js:
--------------------------------------------------------------------------------
1 | export default {
2 | awaitWrap(promise) {
3 | return promise.then(data => [null, data]).catch(error => [error, null]);
4 | },
5 |
6 | rgba2hexa(rgbaColor) {
7 | if (rgbaColor.startsWith('#')) {
8 | return rgbaColor;
9 | }
10 | const rgba = rgbaColor.substring(rgbaColor.indexOf('(') + 1, rgbaColor.lastIndexOf(')'));
11 | const rgbaArr = rgba.split(',');
12 | let hexaColor = '';
13 | rgbaArr.forEach((item, index) => {
14 | let hexa = '';
15 | if (index < 3) {
16 | hexa = Number(item).toString(16);
17 | } else if (index === 3) { // alpha
18 | hexa = Math.min(255, Math.floor(+item * 255)).toString(16);
19 | }
20 | if (hexa.length === 1) {
21 | hexa = `0${hexa}`;
22 | }
23 | hexaColor += hexa;
24 | });
25 | return `#${hexaColor.toUpperCase()}`;
26 | },
27 | };
28 |
29 |
--------------------------------------------------------------------------------
/Web/Demo/src/views/Login.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ;
6 |
7 |
16 |
--------------------------------------------------------------------------------
/Web/Demo/vue.config.js:
--------------------------------------------------------------------------------
1 | const publicPath = process.env.publicPath || '/';
2 | console.log('publicPath:', publicPath);
3 | module.exports = {
4 | publicPath: publicPath,
5 | chainWebpack: (config) => {
6 | config.module
7 | .rule('vue')
8 | .use('vue-loader')
9 | .tap(options => options);
10 | config
11 | .plugin('html')
12 | .tap(args => {
13 | args[0].title = '互动白板-体验课堂';
14 | return args
15 | });
16 | },
17 | transpileDependencies: [
18 | 'vuetify',
19 | ],
20 | };
21 |
--------------------------------------------------------------------------------
/Windows/Demo/BoardDlg.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/BoardDlg.cpp
--------------------------------------------------------------------------------
/Windows/Demo/BoardDlg.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/BoardDlg.h
--------------------------------------------------------------------------------
/Windows/Demo/TIC/TICManager.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright © 2019 Tencent. All rights reserved.
3 | //
4 |
5 | #include "TICManagerImpl.h"
6 |
7 | TICManager &TICManager::GetInstance() {
8 | static TICManagerImpl instance;
9 | return instance;
10 | }
11 |
--------------------------------------------------------------------------------
/Windows/Demo/TICDemo.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/TICDemo.cpp
--------------------------------------------------------------------------------
/Windows/Demo/TICDemo.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/TICDemo.h
--------------------------------------------------------------------------------
/Windows/Demo/TICDemo.rc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/TICDemo.rc
--------------------------------------------------------------------------------
/Windows/Demo/TICDemo.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.28307.489
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TICDemo", "TICDemo.vcxproj", "{667417B8-EF32-41DE-8C00-92CE43AABE37}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|x64 = Debug|x64
11 | Debug|x86 = Debug|x86
12 | Release|x64 = Release|x64
13 | Release|x86 = Release|x86
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {667417B8-EF32-41DE-8C00-92CE43AABE37}.Debug|x64.ActiveCfg = Debug|x64
17 | {667417B8-EF32-41DE-8C00-92CE43AABE37}.Debug|x64.Build.0 = Debug|x64
18 | {667417B8-EF32-41DE-8C00-92CE43AABE37}.Debug|x86.ActiveCfg = Debug|Win32
19 | {667417B8-EF32-41DE-8C00-92CE43AABE37}.Debug|x86.Build.0 = Debug|Win32
20 | {667417B8-EF32-41DE-8C00-92CE43AABE37}.Release|x64.ActiveCfg = Release|x64
21 | {667417B8-EF32-41DE-8C00-92CE43AABE37}.Release|x64.Build.0 = Release|x64
22 | {667417B8-EF32-41DE-8C00-92CE43AABE37}.Release|x86.ActiveCfg = Release|Win32
23 | {667417B8-EF32-41DE-8C00-92CE43AABE37}.Release|x86.Build.0 = Release|Win32
24 | EndGlobalSection
25 | GlobalSection(SolutionProperties) = preSolution
26 | HideSolutionNode = FALSE
27 | EndGlobalSection
28 | GlobalSection(ExtensibilityGlobals) = postSolution
29 | SolutionGuid = {61D41F38-EB91-4136-A037-ABE5EAA1B70A}
30 | EndGlobalSection
31 | EndGlobal
32 |
--------------------------------------------------------------------------------
/Windows/Demo/TICDemoDlg.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/TICDemoDlg.cpp
--------------------------------------------------------------------------------
/Windows/Demo/TICDemoDlg.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/TICDemoDlg.h
--------------------------------------------------------------------------------
/Windows/Demo/VideoDlg.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/VideoDlg.cpp
--------------------------------------------------------------------------------
/Windows/Demo/VideoDlg.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/VideoDlg.h
--------------------------------------------------------------------------------
/Windows/Demo/res/TICDemo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/res/TICDemo.ico
--------------------------------------------------------------------------------
/Windows/Demo/res/TICDemo.rc2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/res/TICDemo.rc2
--------------------------------------------------------------------------------
/Windows/Demo/resource.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/resource.h
--------------------------------------------------------------------------------
/Windows/Demo/stdafx.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/stdafx.cpp
--------------------------------------------------------------------------------
/Windows/Demo/stdafx.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/stdafx.h
--------------------------------------------------------------------------------
/Windows/Demo/targetver.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/Demo/targetver.h
--------------------------------------------------------------------------------
/Windows/README.md:
--------------------------------------------------------------------------------
1 | 本文主要介绍如何快速运行互动课堂Windows版本Demo。
2 |
3 | ## 开发环境
4 |
5 | - 操作系统: Microsoft Windows 7+
6 | - 开发环境:Microsoft Visual Studio 2015 +
7 |
8 | ## 运行Demo
9 |
10 | 使用Visual Studio打开"Windows\Demo\TICDemo.sln",编译运行TICDemo项目即可。
11 |
12 | ## SDK下载
13 |
14 | 当您使用Visual Studio编译Demo工程时,会自动下载SDK压缩包到"Windows\SDK\temp"目录下,然后解压到"Windows\SDK"目录下,因此多数时候无需您手动下载SDK。若您需要手动下载SDK,可以从 [版本信息](./版本信息.md) 获取SDK压缩包下载地址,使用浏览器或者下载工具下载。
15 |
--------------------------------------------------------------------------------
/Windows/SDK/update_tools/libeay32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/SDK/update_tools/libeay32.dll
--------------------------------------------------------------------------------
/Windows/SDK/update_tools/libiconv2.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/SDK/update_tools/libiconv2.dll
--------------------------------------------------------------------------------
/Windows/SDK/update_tools/libintl3.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/SDK/update_tools/libintl3.dll
--------------------------------------------------------------------------------
/Windows/SDK/update_tools/libssl32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/SDK/update_tools/libssl32.dll
--------------------------------------------------------------------------------
/Windows/SDK/update_tools/unzip.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/SDK/update_tools/unzip.exe
--------------------------------------------------------------------------------
/Windows/SDK/update_tools/unzip32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/SDK/update_tools/unzip32.dll
--------------------------------------------------------------------------------
/Windows/SDK/update_tools/wget.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/Windows/SDK/update_tools/wget.exe
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | platform :ios, '8.0'
3 |
4 | target 'TICDemo' do
5 | pod 'TEduBoard_iOS',:podspec=>'https://sdk.qcloudtiw.com/ios/2.7.3.119/TEduBoard_iOS.podspec'
6 | # pod 'TEduBoard_iOS'
7 | pod 'TXIMSDK_Plus_iOS', '6.2.2363'
8 | end
9 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // TICDemo
4 | //
5 | // Created by jameskhdeng(邓凯辉) on 2018/5/11.
6 | // Copyright © 2018年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "60x60",
35 | "idiom" : "iphone",
36 | "filename" : "icon.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "idiom" : "iphone",
41 | "size" : "60x60",
42 | "scale" : "3x"
43 | },
44 | {
45 | "idiom" : "ipad",
46 | "size" : "20x20",
47 | "scale" : "1x"
48 | },
49 | {
50 | "idiom" : "ipad",
51 | "size" : "20x20",
52 | "scale" : "2x"
53 | },
54 | {
55 | "idiom" : "ipad",
56 | "size" : "29x29",
57 | "scale" : "1x"
58 | },
59 | {
60 | "idiom" : "ipad",
61 | "size" : "29x29",
62 | "scale" : "2x"
63 | },
64 | {
65 | "idiom" : "ipad",
66 | "size" : "40x40",
67 | "scale" : "1x"
68 | },
69 | {
70 | "idiom" : "ipad",
71 | "size" : "40x40",
72 | "scale" : "2x"
73 | },
74 | {
75 | "idiom" : "ipad",
76 | "size" : "76x76",
77 | "scale" : "1x"
78 | },
79 | {
80 | "idiom" : "ipad",
81 | "size" : "76x76",
82 | "scale" : "2x"
83 | },
84 | {
85 | "idiom" : "ipad",
86 | "size" : "83.5x83.5",
87 | "scale" : "2x"
88 | },
89 | {
90 | "idiom" : "ios-marketing",
91 | "size" : "1024x1024",
92 | "scale" : "1x"
93 | }
94 | ],
95 | "info" : {
96 | "version" : 1,
97 | "author" : "xcode"
98 | }
99 | }
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/Assets.xcassets/AppIcon.appiconset/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/iOS/Demo/TICDemo/TICDemo/Assets.xcassets/AppIcon.appiconset/icon.png
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/BoardManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // BoardManager.h
3 | // 白板集成示例
4 | //
5 | // Created by 张小桥 on 2022/5/9.
6 | //
7 |
8 | #import
9 | #if TARGET_OS_IPHONE
10 | #import
11 | #else
12 | #import
13 | #endif
14 |
15 | typedef void (^CreteBoardCallback)(int code, NSString * _Nullable desc, TEduBoardController * _Nullable boardController);
16 |
17 | NS_ASSUME_NONNULL_BEGIN
18 |
19 | @interface BoardManager : NSObject
20 | @property (nonatomic, strong) NSString *sdkAppID;
21 | @property (nonatomic, strong) NSString *userId;
22 | @property (nonatomic, strong) NSString *userSig;
23 | @property (nonatomic, strong) NSString *classId;
24 | @property (nonatomic, strong)TEduBoardController * _Nullable boardController;
25 | + (instancetype)sharedInstance;
26 |
27 | -(void)creteBoard:(NSString*)sdkAppId userId:(NSString*)userId userSig:(NSString*)userSig classId:(NSString*)classId callback:(CreteBoardCallback)callback;
28 | - (void)destroyBoard;
29 |
30 | @end
31 |
32 | NS_ASSUME_NONNULL_END
33 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/ClassroomJoinViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ClassroomJoinViewController.h
3 | // TICDemo
4 | //
5 | // Created by jameskhdeng(邓凯辉) on 2018/5/15.
6 | // Copyright © 2018年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ClassroomJoinViewController : UIViewController
12 |
13 | @property(nonatomic, strong)NSString *userId;
14 | @property(nonatomic, strong)NSString *userSig;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/ClassroomViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ClassroomViewController.h
3 | // TICDemo
4 | //
5 | // Created by jameskhdeng(邓凯辉) on 2018/5/15.
6 | // Copyright © 2018年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 | #if TARGET_OS_IPHONE
11 | #import
12 | #else
13 | #import
14 | #endif
15 |
16 | @interface ClassroomViewController : UIViewController
17 | @property (nonatomic, strong) NSString *classId;
18 | @property (nonatomic, strong) NSString *userId;
19 | @property (nonatomic, strong) TEduBoardController *boardController;
20 | @end
21 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/Config/TICConfig.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 |
4 | @interface TICConfig : NSObject
5 | @property(nonatomic,copy) NSString *sdkAppId; //app标识,可在实时音视频控制台(https://console.cloud.tencent.com/rav)创建自己的应用生成
6 | @property(nonatomic,strong) NSMutableArray *userIds; //用户id标识(可由业务后台自己管理)
7 | @property(nonatomic,strong) NSMutableArray *userSigs; //用于用户鉴权,生成方法https://cloud.tencent.com/document/product/647/17275 (可由业务后台自己管理)
8 | + (TICConfig *)shareInstance;
9 | @end
10 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/Config/TICConfig.m:
--------------------------------------------------------------------------------
1 | #import "TICConfig.h"
2 |
3 | @implementation TICConfig
4 | + (TICConfig *)shareInstance
5 | {
6 | static TICConfig *instance = nil;
7 | static dispatch_once_t onceToken;
8 | dispatch_once(&onceToken, ^{
9 | instance = [[TICConfig alloc] init];
10 | instance.userIds = [NSMutableArray array];
11 | instance.userSigs = [NSMutableArray array];
12 | [instance parseLoginInfoConfig];
13 | });
14 | return instance;
15 | }
16 |
17 | - (void)parseLoginInfoConfig
18 | {
19 | NSString *filePath = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"json"];
20 | if(![[NSFileManager defaultManager] fileExistsAtPath:filePath]){
21 | return;
22 | }
23 | NSData *json = [NSData dataWithContentsOfFile:filePath];
24 | NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingAllowFragments error:nil];
25 | self.sdkAppId = dic[@"sdkappid"];
26 | NSArray *users = [dic objectForKey:@"users"];
27 | for (NSDictionary *userDic in users) {
28 | [self.userIds addObject:userDic[@"userId"]];
29 | [self.userSigs addObject:userDic[@"userToken"]];
30 | }
31 | }
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/IMManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // TIMImpManager.h
3 | // TIM集成示例
4 | //
5 | // Created by 张小桥 on 2022/5/9.
6 | //
7 |
8 | #import
9 | #import
10 | #if TARGET_OS_IPHONE
11 | #import
12 | #else
13 | #import
14 | #endif
15 |
16 |
17 |
18 | NS_ASSUME_NONNULL_BEGIN
19 |
20 | typedef void (^IMCallback)(int code, NSString * _Nullable desc);
21 |
22 | @protocol IMManagerListener
23 | @optional
24 | // 接收到群组文本消息
25 | - (void)onRecvGroupTextMessage:(NSString *)text groupId:(NSString *)groupId fromUserId:(NSString *)fromUserId;
26 |
27 | // 接收到个人文本消息
28 | - (void)onRecvCTCTextMessage:(NSString *)text fromUserId:(NSString *)fromUserId;
29 | @end
30 |
31 | @interface IMManager : NSObject
32 |
33 | @property (nonatomic, strong) NSString *sdkAppID;
34 | @property (nonatomic, strong) NSString *userId;
35 | @property (nonatomic, strong) NSString *userSig;
36 | @property (nonatomic, strong) NSString *classId;
37 | @property (nonatomic, weak) id delegate;
38 |
39 | + (instancetype)sharedInstance;
40 | // IM初始化
41 | - (BOOL)initSDK:(int)sdkAppID listener:(id)listener;
42 | // 销毁IM资源
43 | - (void)unInit;
44 |
45 | // IM登录
46 | - (void)login:(NSString *)userID userSig:(NSString *)userSig callback:(IMCallback)callback;
47 | // IM登出
48 | - (void)logout:(IMCallback)callback;
49 | // IM被踢
50 | - (void)kickout;
51 |
52 | // 创建IM群组
53 | - (void)createIMGroup:(NSString*)classId callback:(IMCallback)callback;
54 | // 加入IM群组(含创建IM群组逻辑)
55 | - (void)joinIMGroup:(NSString*)classId callback:(IMCallback)callback;
56 | // 销毁群组
57 | - (void)destroyIMGroup:(NSString*)classId callback:(IMCallback)callback;
58 | // 退出IM群组
59 | - (void)quitIMGroup:(NSString*)classId callback:(IMCallback)callback;
60 | //发送群组消息
61 | - (void)sendGroupTextMessage:(NSString *)text callback:(IMCallback)callback;
62 | @end
63 |
64 | NS_ASSUME_NONNULL_END
65 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/JMToast/JMLoadingHUD.h:
--------------------------------------------------------------------------------
1 | //
2 | // JMLoadingHUD.h
3 | // JMBankCore
4 | //
5 | // Created by 邓凯辉 on 2017/5/31.
6 | // Copyright © 2017年 tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JMLoadingHUD : NSObject
12 |
13 | + (instancetype)sharedInstance;
14 |
15 | + (void)setUserInterfaceEnable:(BOOL)isEnable;
16 |
17 | + (void)setTitle:(NSString *)title;
18 |
19 | + (void)show;
20 | + (void)hide;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/JMToast/JMToast.h:
--------------------------------------------------------------------------------
1 | //
2 | // JMToast.h
3 | // JDKit
4 | //
5 | // Created by 邓凯辉 on 16/9/6.
6 | // Copyright © 2016年 tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JMToast : NSObject
12 |
13 | /**
14 | * @brief 提示框
15 | *
16 | * @return 提示框单例
17 | */
18 | + (JMToast *)sharedToast;
19 |
20 | /**
21 | * @brief 弹出提示 3秒的弹出时间
22 | *
23 | * @param msg 提示语
24 | */
25 | - (void)showDialogWithMsg:(NSString*)msg;
26 |
27 | /**
28 | * @brief 弹出提示
29 | *
30 | * @param msg 提示语
31 | * @param interval 弹出时间
32 | */
33 | - (void)showDialogWithMsg:(NSString*)msg interval:(NSTimeInterval)interval;
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/PickSheetView.h:
--------------------------------------------------------------------------------
1 | //
2 | // PickSheetView.h
3 | // TICDemo
4 | //
5 | // Created by kennethmiao on 2019/4/25.
6 | // Copyright © 2019年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 | @interface PickSheetView : UIView
11 | @property (nonatomic, strong) void (^block)(UIColor *color);
12 | - (void)setColor:(UIColor *)color;
13 | @end
14 |
15 |
16 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/TICDemo.pch:
--------------------------------------------------------------------------------
1 | //
2 | // TICDemo.pch
3 | // TICDemo
4 | //
5 | // Created by jameskhdeng(邓凯辉) on 2018/5/28.
6 | // Copyright © 2018年 Tencent. All rights reserved.
7 | //
8 |
9 | #ifndef TICDemo_pch
10 | #define TICDemo_pch
11 |
12 | #import "JMLoadingHUD.h"
13 | #import "JMToast.h"
14 |
15 | #endif /* TICDemo_pch */
16 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/TableSheetView.h:
--------------------------------------------------------------------------------
1 | //
2 | // TableSheetView.h
3 | // TICDemo
4 | //
5 | // Created by kennethmiao on 2019/4/25.
6 | // Copyright © 2019年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface TableSheetView : UIView
13 | @property (nonatomic, strong) void (^block)(NSInteger index);
14 | - (void)setSelectIndex:(NSInteger)index;
15 | - (void)setData:(NSArray *)data;
16 | @end
17 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/UIViewController+Utils.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+Utils.h
3 | // SmallParty
4 | //
5 | // Created by jameskhdeng(邓凯辉) on 2017/9/29.
6 | // Copyright © 2017年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIViewController (Utils)
12 |
13 | - (void)showAlertWithTitle:(NSString *)title msg:(NSString *)msg handler:(void (^)(UIAlertAction *action))handler;
14 | - (void)showCancleAlertWithTitle:(NSString *)title msg:(NSString *)msg handler:(void (^)(UIAlertAction *action))handler;
15 | - (void)showActionSheetWithTitle:(NSString *)title firstButton:(NSString *)btnTitle1 firstHandler:(void (^)(UIAlertAction *action))handler secondButton:(NSString *)btnTitle2 secondHandler:(void (^)(UIAlertAction *action))handler2;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/ViewController.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @interface ViewController : UIViewController
4 |
5 | @end
6 |
7 |
--------------------------------------------------------------------------------
/iOS/Demo/TICDemo/TICDemo/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // TICDemo
4 | //
5 | // Created by jameskhdeng(邓凯辉) on 2018/5/11.
6 | // Copyright © 2018年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/iOS/README.md:
--------------------------------------------------------------------------------
1 |
2 | 本文主要介绍如何快速运行互动课堂iOS/macOS版本Demo。
3 |
4 | ## 开发环境
5 |
6 | - Xcode 9.0+
7 | - OS X 10.10+的Mac真机
8 | - 项目已配置有效的开发者签名
9 |
10 | ## 运行Demo
11 |
12 |
13 |
14 | #### 1. 安装 CocoaPods
15 |
16 | 在终端窗口中输入如下命令(需要提前在 Mac 中安装 Ruby 环境):
17 |
18 | ```
19 | sudo gem install cocoapods
20 | ```
21 |
22 | #### 2. 更新并安装 SDK
23 |
24 | 在终端窗口中输入如下命令以更新本地库文件:
25 |
26 | ```
27 | pod install
28 | ```
29 |
30 | 或使用以下命令更新本地库版本:
31 |
32 | ```
33 | pod update
34 | ```
35 |
36 | pod命令执行完后,双击打开 .xcworkspace 后缀的工程文件即可编译运行。
37 |
38 |
--------------------------------------------------------------------------------
/iOS/SDK/TEduBoard_2.7.3.119.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/iOS/SDK/TEduBoard_2.7.3.119.zip
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | platform :macos, '10.10'
3 |
4 | target 'TICDemo_Mac' do
5 | pod 'TEduBoard_Mac',:podspec=>'https://sdk.qcloudtiw.com/mac/2.7.3.119/TEduBoard_Mac.podspec'
6 | # pod 'TEduBoard_Mac', '~>2.6.9'
7 | pod 'TXIMSDK_Plus_Mac', '6.2.2363'
8 | pod 'SDWebImage'
9 | end
10 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // TICDemo_Mac
4 | //
5 | // Created by jameskhdeng(邓凯辉) on 2018/10/23.
6 | // Copyright © 2018年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : NSObject
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // TICDemo_Mac
4 | //
5 | // Created by jameskhdeng(邓凯辉) on 2018/10/23.
6 | // Copyright © 2018年 Tencent. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 | #import
11 |
12 | @interface AppDelegate ()
13 |
14 | @end
15 |
16 | @implementation AppDelegate
17 |
18 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
19 | }
20 |
21 | - (void)applicationWillTerminate:(NSNotification *)aNotification {
22 | }
23 |
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "mac",
5 | "scale" : "1x",
6 | "size" : "16x16"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "scale" : "2x",
11 | "size" : "16x16"
12 | },
13 | {
14 | "idiom" : "mac",
15 | "scale" : "1x",
16 | "size" : "32x32"
17 | },
18 | {
19 | "idiom" : "mac",
20 | "scale" : "2x",
21 | "size" : "32x32"
22 | },
23 | {
24 | "filename" : "icon128.png",
25 | "idiom" : "mac",
26 | "scale" : "1x",
27 | "size" : "128x128"
28 | },
29 | {
30 | "idiom" : "mac",
31 | "scale" : "2x",
32 | "size" : "128x128"
33 | },
34 | {
35 | "idiom" : "mac",
36 | "scale" : "1x",
37 | "size" : "256x256"
38 | },
39 | {
40 | "idiom" : "mac",
41 | "scale" : "2x",
42 | "size" : "256x256"
43 | },
44 | {
45 | "idiom" : "mac",
46 | "scale" : "1x",
47 | "size" : "512x512"
48 | },
49 | {
50 | "idiom" : "mac",
51 | "scale" : "2x",
52 | "size" : "512x512"
53 | }
54 | ],
55 | "info" : {
56 | "author" : "xcode",
57 | "version" : 1
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Assets.xcassets/AppIcon.appiconset/icon128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Assets.xcassets/AppIcon.appiconset/icon128.png
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Assets.xcassets/surfboard.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "surfboard@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Assets.xcassets/surfboard.imageset/surfboard@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Assets.xcassets/surfboard.imageset/surfboard@2x.png
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/BoardManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // BoardManager.h
3 | // 白板集成示例
4 | //
5 | // Created by 张小桥 on 2022/5/9.
6 | //
7 |
8 | #import
9 | #if TARGET_OS_IPHONE
10 | #import
11 | #else
12 | #import
13 | #endif
14 |
15 | typedef void (^CreteBoardCallback)(int code, NSString * _Nullable desc, TEduBoardController * _Nullable boardController);
16 |
17 | NS_ASSUME_NONNULL_BEGIN
18 |
19 | @interface BoardManager : NSObject
20 | @property (nonatomic, strong) NSString *sdkAppID;
21 | @property (nonatomic, strong) NSString *userId;
22 | @property (nonatomic, strong) NSString *userSig;
23 | @property (nonatomic, strong) NSString *classId;
24 | @property (nonatomic, strong)TEduBoardController * _Nullable boardController;
25 | + (instancetype)sharedInstance;
26 |
27 | -(void)creteBoard:(NSString*)sdkAppId userId:(NSString*)userId userSig:(NSString*)userSig classId:(NSString*)classId callback:(CreteBoardCallback)callback;
28 | - (void)destroyBoard;
29 |
30 | @end
31 |
32 | NS_ASSUME_NONNULL_END
33 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/ColorPickViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ColorPickViewController.h
3 | // TICDemo_Mac
4 | //
5 | // Created by kennethmiao on 2019/4/30.
6 | // Copyright © 2019年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface ColorPickViewController : NSViewController
14 | @property (nonatomic, strong) void (^block)(NSColor *color);
15 | - (void)setDefaultColor:(NSColor *)color;
16 | - (NSColor *)getPickColor;
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/ColorPickViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ColorPickViewController.m
3 | // TICDemo_Mac
4 | //
5 | // Created by kennethmiao on 2019/4/30.
6 | // Copyright © 2019年 Tencent. All rights reserved.
7 | //
8 |
9 | #import "ColorPickViewController.h"
10 |
11 | @interface ColorPickViewController ()
12 | @property (weak) IBOutlet NSTextField *redTextField;
13 | @property (weak) IBOutlet NSTextField *greenTextField;
14 | @property (weak) IBOutlet NSTextField *blueTextField;
15 | @property (weak) IBOutlet NSSlider *redSlider;
16 | @property (weak) IBOutlet NSSlider *greenSlider;
17 | @property (weak) IBOutlet NSSlider *blueSlider;
18 |
19 | @property (nonatomic, strong) NSColor *defaultColor;
20 | @property (nonatomic, strong) NSColor *pickColor;
21 | @end
22 |
23 | @implementation ColorPickViewController
24 |
25 | - (void)viewDidLoad {
26 | [super viewDidLoad];
27 |
28 | const CGFloat *components = CGColorGetComponents(_defaultColor.CGColor);
29 | int r = components[0] * 255;
30 | int g = components[1] * 255;
31 | int b = components[2] * 255;
32 | self.redSlider.intValue = r;
33 | self.greenSlider.intValue = g;
34 | self.blueSlider.intValue = b;
35 | self.redTextField.intValue = r;
36 | self.greenTextField.intValue = g;
37 | self.blueTextField.intValue = b;
38 | }
39 | - (IBAction)onRedChanged:(id)sender {
40 | [self setColor];
41 | }
42 | - (IBAction)onGreenChanged:(id)sender {
43 | [self setColor];
44 | }
45 | - (IBAction)onBlueChanged:(id)sender {
46 | [self setColor];
47 | }
48 |
49 | - (void)setColor
50 | {
51 | self.redTextField.intValue = self.redSlider.intValue;
52 | self.greenTextField.intValue = self.greenSlider.intValue;
53 | self.blueTextField.intValue = self.blueSlider.intValue;
54 | self.pickColor = [NSColor colorWithRed:self.redSlider.intValue / 255.0 green:self.greenSlider.intValue / 255.0 blue:self.blueSlider.intValue / 255.0 alpha:1.0];
55 | if(self.block){
56 | self.block(self.pickColor);
57 | }
58 | }
59 |
60 | - (void)setDefaultColor:(NSColor *)color
61 | {
62 | _defaultColor = color;
63 | _pickColor = _defaultColor;
64 | }
65 | - (NSColor *)getPickColor
66 | {
67 | return _pickColor;
68 | }
69 | @end
70 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Config/TICConfig.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 |
4 | @interface TICConfig : NSObject
5 | @property(nonatomic,copy) NSString *sdkAppId; //app标识,可在实时音视频控制台(https://console.cloud.tencent.com/rav)创建自己的应用生成
6 | @property(nonatomic,strong) NSMutableArray *userIds; //用户id标识(可由业务后台自己管理)
7 | @property(nonatomic,strong) NSMutableArray *userSigs; //用于用户鉴权,生成方法https://cloud.tencent.com/document/product/647/17275 (可由业务后台自己管理)
8 | + (TICConfig *)shareInstance;
9 | @end
10 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Config/TICConfig.m:
--------------------------------------------------------------------------------
1 | #import "TICConfig.h"
2 |
3 | @implementation TICConfig
4 | + (TICConfig *)shareInstance
5 | {
6 | static TICConfig *instance = nil;
7 | static dispatch_once_t onceToken;
8 | dispatch_once(&onceToken, ^{
9 | instance = [[TICConfig alloc] init];
10 | instance.userIds = [NSMutableArray array];
11 | instance.userSigs = [NSMutableArray array];
12 | [instance parseLoginInfoConfig];
13 | });
14 | return instance;
15 | }
16 |
17 | - (void)parseLoginInfoConfig
18 | {
19 | NSString *filePath = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"json"];
20 | if(![[NSFileManager defaultManager] fileExistsAtPath:filePath]){
21 | return;
22 | }
23 | NSData *json = [NSData dataWithContentsOfFile:filePath];
24 | NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingAllowFragments error:nil];
25 | self.sdkAppId = dic[@"sdkappid"];
26 | NSArray *users = [dic objectForKey:@"users"];
27 | for (NSDictionary *userDic in users) {
28 | [self.userIds addObject:userDic[@"userId"]];
29 | [self.userSigs addObject:userDic[@"userToken"]];
30 | }
31 | }
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/IMManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // TIMImpManager.h
3 | // TIM集成示例
4 | //
5 | // Created by 张小桥 on 2022/5/9.
6 | //
7 |
8 | #import
9 | #if TARGET_OS_IPHONE
10 | #import
11 | #import
12 | #else
13 | #import
14 | #import
15 | #endif
16 |
17 |
18 |
19 | NS_ASSUME_NONNULL_BEGIN
20 |
21 | typedef void (^IMCallback)(int code, NSString * _Nullable desc);
22 |
23 | @protocol IMManagerListener
24 | @optional
25 | // 接收到群组文本消息
26 | - (void)onRecvGroupTextMessage:(NSString *)text groupId:(NSString *)groupId fromUserId:(NSString *)fromUserId;
27 |
28 | // 接收到个人文本消息
29 | - (void)onRecvCTCTextMessage:(NSString *)text fromUserId:(NSString *)fromUserId;
30 | @end
31 |
32 | @interface IMManager : NSObject
33 |
34 | @property (nonatomic, strong) NSString *sdkAppID;
35 | @property (nonatomic, strong) NSString *userId;
36 | @property (nonatomic, strong) NSString *userSig;
37 | @property (nonatomic, strong) NSString *classId;
38 | @property (nonatomic, weak) id delegate;
39 |
40 | + (instancetype)sharedInstance;
41 | // IM初始化
42 | - (BOOL)initSDK:(int)sdkAppID listener:(id)listener;
43 | // 销毁IM资源
44 | - (void)unInit;
45 |
46 | // IM登录
47 | - (void)login:(NSString *)userID userSig:(NSString *)userSig callback:(IMCallback)callback;
48 | // IM登出
49 | - (void)logout:(IMCallback)callback;
50 | // IM被踢
51 | - (void)kickout;
52 |
53 | // 创建IM群组
54 | - (void)createIMGroup:(NSString*)classId callback:(IMCallback)callback;
55 | // 加入IM群组(含创建IM群组逻辑)
56 | - (void)joinIMGroup:(NSString*)classId callback:(IMCallback)callback;
57 | // 销毁群组
58 | - (void)destroyIMGroup:(NSString*)classId callback:(IMCallback)callback;
59 | // 退出IM群组
60 | - (void)quitIMGroup:(NSString*)classId callback:(IMCallback)callback;
61 | //发送群组消息
62 | - (void)sendGroupTextMessage:(NSString *)text callback:(IMCallback)callback;
63 | @end
64 |
65 | NS_ASSUME_NONNULL_END
66 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSMinimumSystemVersion
24 | $(MACOSX_DEPLOYMENT_TARGET)
25 | NSAppTransportSecurity
26 |
27 | NSExceptionDomains
28 |
29 | myqcloud.com
30 |
31 | NSIncludesSubdomains
32 |
33 | NSTemporaryExceptionAllowsInsecureHTTPLoads
34 |
35 |
36 | qcloud.com
37 |
38 | NSIncludesSubdomains
39 |
40 | NSTemporaryExceptionAllowsInsecureHTTPLoads
41 |
42 |
43 |
44 |
45 | NSCameraUsageDescription
46 | 获取相机权限
47 | NSHumanReadableCopyright
48 | Copyright © 2018年 Tencent. All rights reserved.
49 | NSMainStoryboardFile
50 | Main
51 | NSMicrophoneUsageDescription
52 | 获取麦克风权限
53 | NSPrincipalClass
54 | NSApplication
55 | kTCCServiceMediaLibrary
56 | 播放声音
57 |
58 |
59 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Resource/欢迎新同学.ppt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/macOS/Demo/TICDemo_Mac/TICDemo_Mac/Resource/欢迎新同学.ppt
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/TICDemo_Mac.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.device.camera
8 |
9 | com.apple.security.device.microphone
10 |
11 | com.apple.security.device.usb
12 |
13 | com.apple.security.files.user-selected.read-only
14 |
15 | com.apple.security.network.client
16 |
17 | com.apple.security.network.server
18 |
19 | com.apple.security.print
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/ThumbItem.h:
--------------------------------------------------------------------------------
1 | //
2 | // ThumbItem.h
3 | // TICDemo_Mac
4 | //
5 | // Created by 缪少豪 on 2019/11/28.
6 | // Copyright © 2019 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface ThumbItem : NSCollectionViewItem
14 | @property (weak) IBOutlet NSImageView *imageView;
15 |
16 | @end
17 |
18 | NS_ASSUME_NONNULL_END
19 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/ThumbItem.m:
--------------------------------------------------------------------------------
1 | //
2 | // ThumbItem.m
3 | // TICDemo_Mac
4 | //
5 | // Created by 缪少豪 on 2019/11/28.
6 | // Copyright © 2019 Tencent. All rights reserved.
7 | //
8 |
9 | #import "ThumbItem.h"
10 |
11 | @interface ThumbItem ()
12 |
13 | @end
14 |
15 | @implementation ThumbItem
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | // Do view setup here.
20 | }
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // TICDemo_Mac
4 | //
5 | // Created by jameskhdeng(邓凯辉) on 2018/10/23.
6 | // Copyright © 2018年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : NSViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/macOS/Demo/TICDemo_Mac/TICDemo_Mac/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // TICDemo_Mac
4 | //
5 | // Created by jameskhdeng(邓凯辉) on 2018/10/23.
6 | // Copyright © 2018年 Tencent. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | int main(int argc, const char * argv[]) {
12 | return NSApplicationMain(argc, argv);
13 | }
14 |
--------------------------------------------------------------------------------
/macOS/README.md:
--------------------------------------------------------------------------------
1 |
2 | 本文主要介绍如何快速运行互动课堂iOS/macOS版本Demo。
3 |
4 | ## 开发环境
5 |
6 | - Xcode 9.0+
7 | - OS X 10.10+的Mac真机
8 | - 项目已配置有效的开发者签名
9 |
10 | ## 运行Demo
11 |
12 |
13 |
14 | #### 1. 安装 CocoaPods
15 |
16 | 在终端窗口中输入如下命令(需要提前在 Mac 中安装 Ruby 环境):
17 |
18 | ```
19 | sudo gem install cocoapods
20 | ```
21 |
22 | #### 2. 更新并安装 SDK
23 |
24 | 在终端窗口中输入如下命令以更新本地库文件:
25 |
26 | ```
27 | pod install
28 | ```
29 |
30 | 或使用以下命令更新本地库版本:
31 |
32 | ```
33 | pod update
34 | ```
35 |
36 | pod命令执行完后,双击打开 .xcworkspace 后缀的工程文件即可编译运行。
37 |
38 |
--------------------------------------------------------------------------------
/macOS/SDK/TEduBoard_Mac_2.7.3.119.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/macOS/SDK/TEduBoard_Mac_2.7.3.119.zip
--------------------------------------------------------------------------------
/小程序/README.md:
--------------------------------------------------------------------------------
1 | ### 互动白板小程序的两种方式
2 | - webrtc-room + webview
3 | - webrtc-room + canvas
4 |
5 | > 受限于小程序的技术方案,webrtc-room + canvas方式能力欠缺,目前主推webrtc-room + webview方式
6 |
7 | 两种方式能力对比:
8 |
9 | | 白板功能点 | 【webrtcroom + canvas方式】支持 | 【webrtcroom + webview方式】支持 | 说明 |
10 | | ------------------ | -------- |------|------|
11 | | 画笔 | ✔ | ✔ | |
12 | | 橡皮 | ✔ | ✔ | |
13 | | 激光笔 | ✔ | ✔ | |
14 | | 直线 | ✔ | ✔ | | |
15 | | 空心椭圆 | ✔ | ✔ | |
16 | | 空心矩形 | ✔ | ✔ | |
17 | | 实心椭圆 | ✔ | ✔ | |
18 | | 实心矩形 | ✔ | ✔ | |
19 | | 背景色 | ✔ | ✔ | |
20 | | 背景图 | ✔ | ✔ | |
21 | | H5背景 | ✖ | ✔ | |
22 | | 点选 | ✔ | ✔ | |
23 | | 框选 | ✔ | ✔ | |
24 | | 撤销 | ✔ | ✔ | |
25 | | 重做 | ✔ | ✔ | |
26 | | 文件展示 | ✔ | ✔ | 支持PPT、PDF、WORD、EXCEL |
27 | | 文件上传 | ✔ | ✔ | 支持PPT、PDF、WORD、EXCEL,图片 |
28 | | 动画H5PPT | ✖ | ✔ | |
29 | | 放大 | ✖ | ✔ | |
30 | | 缩小 | ✖ | ✔ | |
31 | | 拖动 | ✖ | ✔ | |
32 | | 初始化设置白板比例 | ✔ | ✔ | |
33 | | 文字输入/展示 | ✖ | ✔ | |
34 | | 涂鸦平滑级别 | ✔ | ✔ | |
35 | | 动态设置白板比例 | ✖ | ✔ | |
36 | | 白板内容填充方式 | ✖ | ✔ | |
37 |
38 |
39 | ### 目录说明
40 |
41 | | 目录 | 说明 |
42 | | -------- | ------ |
43 | | webrtc-room + canvas| webrtc-room + canvas的方式源码 |
44 | | webrtc-room + webview | webrtc-room + webview的方式源码 |
45 | | - 小程序源码 | 小程序源码 |
46 | | - webview链接页面源码 | webview链接页面源码 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | .vscode
3 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/README.md:
--------------------------------------------------------------------------------
1 | ## 安装依赖包
2 |
3 | > 请先在小程序的miniprogram中运行npm install
4 |
5 | ```
6 | npm install
7 | ```
8 |
9 | ## 然后在开发者工具中构建npm
10 |
11 | > 工具 -> 构建npm包
12 |
13 |
14 | ## 关于接入最新im
15 |
16 | - 配置安全域名
17 |
18 | > 参考[tim文档](https://cloud.tencent.com/document/product/269/37413#.E5.B8.B8.E8.A7.81.E9.97.AE.E9.A2.98)
19 |
20 | - 如果需要发布图片,文件还需要注册cos插件
21 |
22 | > 参考[tim文档](https://cloud.tencent.com/document/product/269/37413#.E9.9B.86.E6.88.90-sdk)
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/cloudfunctions/login/index.js:
--------------------------------------------------------------------------------
1 | // 云函数模板
2 | // 部署:在 cloud-functions/login 文件夹右击选择 “上传并部署”
3 |
4 | /**
5 | * 这个示例将经自动鉴权过的小程序用户 openid 返回给小程序端
6 | *
7 | * event 参数包含
8 | * - 小程序端调用传入的 data
9 | * - 经过微信鉴权直接可信的用户唯一标识 openid
10 | *
11 | */
12 | exports.main = (event, context) => {
13 | console.log(event)
14 | console.log(context)
15 |
16 | // 可执行其他自定义逻辑
17 | // console.log 的内容可以在云开发云函数调用日志查看
18 |
19 | return {
20 | openid: event.userInfo.openId,
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/app.js:
--------------------------------------------------------------------------------
1 | App({
2 | onLaunch: function () {
3 | console.log('App Launch')
4 | },
5 | onShow: function () {
6 | console.log('App Show')
7 | },
8 | onHide: function () {
9 | console.log('App Hide')
10 | },
11 | globalData: {
12 | hasLogin: false
13 | }
14 | });
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "pages": [
3 | "pages/tic/room_canvas/index/index",
4 | "pages/tic/room_canvas/room/room"
5 | ],
6 | "window": {
7 | "pageOrientation": "auto",
8 | "navigationBarTextStyle": "black",
9 | "navigationBarTitleText": "腾讯云互动课堂-canvas",
10 | "navigationBarBackgroundColor": "#f8f8f8",
11 | "backgroundColor": "#f8f8f8"
12 | },
13 | "networkTimeout": {
14 | "request": 10000,
15 | "connectSocket": 10000,
16 | "uploadFile": 10000,
17 | "downloadFile": 10000
18 | },
19 | "debug": true,
20 | "sitemapLocation": "sitemap.json"
21 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/app.wxss:
--------------------------------------------------------------------------------
1 | button {
2 | padding: 0;
3 | margin: 0;
4 | }
5 |
6 | button::after {
7 | border: none;
8 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/board-component/board-component.json:
--------------------------------------------------------------------------------
1 | {
2 | "component": true,
3 | "usingComponents": {}
4 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/board-component/board-component.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/board-component/board-component.wxss:
--------------------------------------------------------------------------------
1 | .tic-board-box {
2 | width: 100%;
3 | height: 100%;
4 | }
5 |
6 | .tic-board-box .tic-board-wrap {
7 | position: relative;
8 | top: 50%;
9 | left: 50%;
10 | width: 100%;
11 | height: 100%;
12 | transform: translate(-50%, -50%);
13 | overflow: hidden;
14 | }
15 |
16 | .tic-board-box .tic_board_canvas {
17 | position: absolute;
18 | top: 50%;
19 | left: 50%;
20 | width: 100%;
21 | height: 100%;
22 | transform: translate(-50%, -50%);
23 | background: transparent;
24 | z-index: 15;
25 | }
26 |
27 | .tic-board-box .tic_board_canvas.float_layout {
28 | z-index: 20;
29 | }
30 |
31 | .tic-board-box .tic_board_img_bg {
32 | position: absolute;
33 | z-index: 10;
34 | }
35 |
36 | .tic-board-box .tic_board_img_bg.vertical {}
37 |
38 | .tic-board-box .tic_board_img_bg.horizontal {
39 | transform: rotate(90deg);
40 | transform-origin: left top 0;
41 | }
42 |
43 | .tic-board-box .tic_board_color_bg {
44 | position: absolute;
45 | top: 0;
46 | right: 0;
47 | bottom: 0;
48 | left: 0;
49 | width: 100%;
50 | height: 100%;
51 | z-index: 5;
52 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/event/BoardListener.js:
--------------------------------------------------------------------------------
1 | var BoardListener = {
2 | listenerList: [],
3 |
4 | // 增加消息监听
5 | addBoardEventListener(listener) {
6 | this.listenerList.push(listener);
7 | },
8 |
9 | removeBoardEventListener(listener) {
10 | if (listener) {
11 | var index = -1;
12 | for (var i = 0, len = this.listenerList.length; i < len; i++) {
13 | if (listener == this.listenerList[i]) {
14 | index = i;
15 | }
16 | }
17 | if (index > -1) {
18 | this.listenerList.splice(index, 1);
19 | }
20 | } else {
21 | this.listenerList = [];
22 | }
23 | },
24 |
25 | fireEvent(eventName, ...data) {
26 | this.listenerList.forEach(listener => {
27 | var callback = listener[eventName];
28 | callback && callback(...data)
29 | });
30 | }
31 | }
32 | module.exports = BoardListener;
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/event/EventListener.js:
--------------------------------------------------------------------------------
1 | var EventListener = {
2 | listenerList: [],
3 |
4 | // 增加消息监听
5 | addTICEventListener(listener) {
6 | this.listenerList.push(listener);
7 | },
8 |
9 | removeTICEventListener(listener) {
10 | if (listener) {
11 | var index = -1;
12 | for (var i = 0, len = this.listenerList.length; i < len; i++) {
13 | if (listener == this.listenerList[i]) {
14 | index = i;
15 | }
16 | }
17 | if (index > -1) {
18 | this.listenerList.splice(index, 1);
19 | }
20 | } else {
21 | this.listenerList = [];
22 | }
23 | },
24 |
25 | fireEvent(eventName, ...data) {
26 | this.listenerList.forEach(listener => {
27 | var callback = listener[eventName];
28 | callback && callback(...data)
29 | });
30 | }
31 | }
32 |
33 | module.exports = EventListener;
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/event/MessageListener.js:
--------------------------------------------------------------------------------
1 | var MessageListener = {
2 | listenerList: [],
3 |
4 | // 增加消息监听
5 | addTICMessageListener(listener) {
6 | this.listenerList.push(listener);
7 | },
8 |
9 | removeTICMessageListener(listener) {
10 | if (listener) {
11 | var index = -1;
12 | for (var i = 0, len = this.listenerList.length; i < len; i++) {
13 | if (listener == this.listenerList[i]) {
14 | index = i;
15 | }
16 | }
17 | if (index > -1) {
18 | this.listenerList.splice(index, 1);
19 | }
20 | } else {
21 | this.listenerList = [];
22 | }
23 | },
24 |
25 | fireEvent(eventName, ...data) {
26 | this.listenerList.forEach(listener => {
27 | var callback = listener[eventName];
28 | callback && callback(...data)
29 | });
30 | }
31 | }
32 |
33 | module.exports = MessageListener;
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/event/StatusListener.js:
--------------------------------------------------------------------------------
1 | var StatusListener = {
2 | listenerList: [],
3 |
4 | // 增加消息监听
5 | addTICStatusListener(listener) {
6 | this.listenerList.push(listener);
7 | },
8 |
9 | removeTICStatusListener(listener) {
10 | if (listener) {
11 | var index = -1;
12 | for (var i = 0, len = this.listenerList.length; i < len; i++) {
13 | if (listener == this.listenerList[i]) {
14 | index = i;
15 | }
16 | }
17 | if (index > -1) {
18 | this.listenerList.splice(index, 1);
19 | }
20 | } else {
21 | this.listenerList = [];
22 | }
23 | },
24 |
25 | fireEvent(eventName, ...data) {
26 | this.listenerList.forEach(listener => {
27 | var callback = listener[eventName];
28 | callback && callback(...data)
29 | });
30 | }
31 | }
32 |
33 | module.exports = StatusListener;
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/tic-component/tic-component.json:
--------------------------------------------------------------------------------
1 | {
2 | "component": true,
3 | "navigationBarTitleText": "tic_prog",
4 | "usingComponents": {
5 | "board-component": "/components/board-component/board-component"
6 | }
7 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/tic-component/tic-component.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/trtc-room/model/pusher.js:
--------------------------------------------------------------------------------
1 | import { DEFAULT_PUSHER_CONFIG } from '../common/constants.js'
2 |
3 | class Pusher {
4 | constructor(options) {
5 | Object.assign(this, DEFAULT_PUSHER_CONFIG, {
6 | isVisible: true, // 手Q初始化时不能隐藏 puser和player 否则黑屏
7 | }, options)
8 | }
9 | /**
10 | * 通过wx.createLivePusherContext 获取 context
11 | * @param {Object} context 组件上下文
12 | * @returns {Object} livepusher context
13 | */
14 | getPusherContext(context) {
15 | if (!this.pusherContext) {
16 | this.pusherContext = wx.createLivePusherContext(context)
17 | }
18 | return this.pusherContext
19 | }
20 | reset() {
21 | console.log('Pusher reset', this.pusherContext)
22 | if (this.pusherContext) {
23 | console.log('Pusher pusherContext.stop()')
24 | this.pusherContext.stop()
25 | this.pusherContext = null
26 | }
27 | Object.assign(this, DEFAULT_PUSHER_CONFIG, {
28 | isVisible: true,
29 | })
30 | }
31 | }
32 |
33 | export default Pusher
34 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/trtc-room/model/stream.js:
--------------------------------------------------------------------------------
1 | // 一个stream 对应一个 player
2 | import { DEFAULT_PLAYER_CONFIG } from '../common/constants.js'
3 |
4 | class Stream {
5 | constructor(options) {
6 | Object.assign(this, DEFAULT_PLAYER_CONFIG, {
7 | userID: '', // 该stream 关联的userID
8 | streamType: '', // stream 类型 [main small] aux
9 | streamID: '', // userID + '_' + streamType
10 | isVisible: true, // 手Q初始化时不能隐藏 puser和player 否则黑屏。iOS 微信初始化时不能隐藏,否则同层渲染失败,player会置顶
11 | hasVideo: false,
12 | hasAudio: false,
13 | volume: 0, // 音量大小 0~100
14 | playerContext: undefined, // playerContext 依赖component context来获取,目前只能在渲染后获取
15 | }, options)
16 | }
17 | setProperty(options) {
18 | Object.assign(this, options)
19 | }
20 | reset() {
21 | if (this.playerContext) {
22 | this.playerContext.stop()
23 | this.playerContext = undefined
24 | }
25 | Object.assign(this, DEFAULT_PLAYER_CONFIG, {
26 | userID: '', // 该stream 关联的userID
27 | streamType: '', // stream 类型 [main small] aux
28 | streamID: '',
29 | isVisible: true,
30 | hasVideo: false,
31 | hasAudio: false,
32 | volume: 0, // 音量大小 0~100
33 | playerContext: undefined,
34 | })
35 | }
36 | }
37 |
38 | export default Stream
39 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/trtc-room/model/user.js:
--------------------------------------------------------------------------------
1 | class User {
2 | constructor(options) {
3 | Object.assign(this, {
4 | userID: '',
5 | // hasMainStream: false, // 触发 1034 且stream type 为 main 即为true
6 | // hasAuxStream: false, // 触发 1034 且stream type 为 aux 即为true
7 | // hasSmallStream: false, // 触发 1034 且stream type 为 small 即为true
8 | streams: {
9 | // main: mainStream
10 | // aux: auxStream
11 | }, // 有0~2个Stream, 进房没有推流,main aux, small 特殊处理,small 和 main 同时只播放一路
12 | // stream 是用于渲染 live-player 的数据源
13 | }, options)
14 | }
15 | }
16 |
17 | export default User
18 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/trtc-room/template/custom/custom.wxss:
--------------------------------------------------------------------------------
1 | /* 通过方法自定义模式 */
2 | .template-custom {
3 | /* 绝对定位模式 pusher 和 player 都用绝对定位*/
4 | display: flex;
5 | background-repeat: no-repeat;
6 | background-size: cover;
7 | width: 100%;
8 | height: 100%;
9 | position: relative;
10 | }
11 |
12 |
13 | .template-custom live-pusher,
14 | .template-custom live-player {
15 | width: 100%;
16 | height: 100%;
17 | }
18 |
19 | @media (orientation: landscape) {
20 | .template-custom .pusher-container {
21 | position: absolute;
22 | display: inline-block;
23 | top: 0vh;
24 | left: 0vw;
25 | height: 50vh;
26 | width: 100%;
27 | overflow: hidden;
28 | text-align: center;
29 | }
30 |
31 | .template-custom .players-container {
32 | position: absolute;
33 | display: inline-block;
34 | top: 50vh;
35 | left: 0vw;
36 | height: 50vh;
37 | width: 100%;
38 | text-align: center;
39 | vertical-align: top;
40 | }
41 |
42 | .template-custom .player-container {
43 | width: 50%;
44 | height: 25vh;
45 | }
46 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/trtc-room/template/custom_canvas/custom_canvas.wxss:
--------------------------------------------------------------------------------
1 | /* 通过方法自定义模式 */
2 | .template-custom_canvas {
3 | /* 绝对定位模式 pusher 和 player 都用绝对定位*/
4 | display: flex;
5 | flex-wrap: wrap;
6 | width: 100%;
7 | height: 100%;
8 | align-content: flex-start;
9 | }
10 |
11 |
12 | .template-custom_canvas .view-container {
13 | width: 25%;
14 | height: 25%;
15 | }
16 |
17 |
18 | .template-custom_canvas live-pusher,
19 | .template-custom_canvas live-player {
20 | width: 100%;
21 | height: 100%;
22 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/trtc-room/trtc-room.json:
--------------------------------------------------------------------------------
1 | {
2 | "component": true,
3 | "usingComponents": {}
4 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/trtc-room/trtc-room.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/trtc-room/trtc-room.wxss:
--------------------------------------------------------------------------------
1 | @import "./template/custom/custom.wxss";
2 | @import "./template/custom_canvas/custom_canvas.wxss";
3 |
4 | .pusher {
5 | width: 100%;
6 | height: 100%;
7 | }
8 |
9 | .player {
10 | width: 100%;
11 | height: 100%;
12 | }
13 |
14 |
15 | .trtc-room-container {
16 | display: block;
17 | width: 100%;
18 | height: 100%;
19 | }
20 |
21 | .trtc-room-container .btn {
22 | display: inline-block;
23 | width: auto;
24 | height: 60rpx;
25 | min-height: 60rpx;
26 | line-height: 60rpx;
27 | font-size: 12px;
28 | font-weight: normal;
29 | padding: 0 10rpx;
30 | color: #006eff;
31 | background-color: #f2f2f2;
32 | margin: 0 16rpx;
33 | }
34 |
35 | .trtc-room-container .btn.active {
36 | color: #f2f2f2;
37 | background-color: #006eff;
38 | }
39 |
40 | .trtc-room-container .btn-hover {
41 | background-color: #d1d1d1;
42 | }
43 |
44 | .none,
45 | .view-container.none,
46 | .template-grid .view-container.none,
47 | .template-1v1 .view-container.none {
48 | display: none !important;
49 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/trtc-room/utils/compare-version.js:
--------------------------------------------------------------------------------
1 | export default function compareVersion(v1, v2) {
2 | v1 = v1.split('.')
3 | v2 = v2.split('.')
4 | const len = Math.max(v1.length, v2.length)
5 | while (v1.length < len) {
6 | v1.push('0')
7 | }
8 | while (v2.length < len) {
9 | v2.push('0')
10 | }
11 | for (let i = 0; i < len; i++) {
12 | const num1 = parseInt(v1[i])
13 | const num2 = parseInt(v2[i])
14 | if (num1 > num2) {
15 | return 1
16 | } if (num1 < num2) {
17 | return -1
18 | }
19 | }
20 | return 0
21 | }
22 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/trtc-room/utils/environment.js:
--------------------------------------------------------------------------------
1 | import compareVersion from './compare-version.js'
2 | const TAG_NAME = 'TRTC-ROOM'
3 |
4 | const env = wx ? wx : qq
5 | if (!env) {
6 | console.error(TAG_NAME, '不支持当前小程序环境')
7 | }
8 | const systemInfo = env.getSystemInfoSync()
9 | const safeArea = systemInfo.safeArea
10 | if (systemInfo.system === 'iOS 13.3' || (systemInfo.model === 'iPhoneX' && systemInfo.system === 'iOS 13.3.1')) {
11 | // audio-volume-type = media
12 | console.log('use media audio volume type')
13 | }
14 | console.log(TAG_NAME, 'SystemInfo', systemInfo)
15 | let isNewVersion
16 | if (typeof qq !== 'undefined') {
17 | isNewVersion = true
18 | } else if (typeof wx !== 'undefined') {
19 | if (compareVersion(systemInfo.version, '7.0.8') >= 0 || // mobile pc
20 | (compareVersion(systemInfo.version, '2.4.0') >= 0 && compareVersion(systemInfo.version, '6.0.0') < 0) && // mac os
21 | compareVersion(systemInfo.SDKVersion, '2.10.0') >= 0) {
22 | isNewVersion = true
23 | } else {
24 | isNewVersion = false
25 | }
26 | }
27 |
28 | export const IS_TRTC = true || isNewVersion
29 | export const IS_QQ = typeof qq !== 'undefined'
30 | export const IS_WX = typeof wx !== 'undefined'
31 | export const IS_IOS = /iOS/i.test(systemInfo.system)
32 | export const IS_ANDROID = /Android/i.test(systemInfo.system)
33 | export const IS_MAC = /mac/i.test(systemInfo.system)
34 | export const APP_VERSION = systemInfo.version
35 | export const LIB_VERSION = (function () {
36 | if (systemInfo.SDKBuild) {
37 | return systemInfo.SDKVersion + '-' + systemInfo.SDKBuild
38 | }
39 | return systemInfo.SDKVersion
40 | })()
41 |
42 | let isFullscreenDevie = false
43 | if (systemInfo.screenHeight > safeArea.bottom) {
44 | // if (/iphone\s{0,}x/i.test(systemInfo.model)) {
45 | isFullscreenDevie = true
46 | }
47 |
48 | export const IS_FULLSCREEN_DEVICE = isFullscreenDevie
49 |
50 | console.log(TAG_NAME, 'APP_VERSION:', APP_VERSION, ' LIB_VERSION:', LIB_VERSION, ' is new version:', IS_TRTC)
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/components/trtc-room/utils/event.js:
--------------------------------------------------------------------------------
1 | class Event {
2 | on(event, fn, ctx) {
3 | if (typeof fn !== 'function') {
4 | console.error('listener must be a function')
5 | return
6 | }
7 |
8 | this._stores = this._stores || {};
9 | (this._stores[event] = this._stores[event] || []).push({ cb: fn, ctx: ctx })
10 | }
11 |
12 | emit(event) {
13 | this._stores = this._stores || {}
14 | let store = this._stores[event]
15 | let args
16 |
17 | if (store) {
18 | store = store.slice(0)
19 | args = [].slice.call(arguments, 1),
20 | args[0] = {
21 | eventCode: event,
22 | data: args[0],
23 | }
24 | for (let i = 0, len = store.length; i < len; i++) {
25 | store[i].cb.apply(store[i].ctx, args)
26 | }
27 | }
28 | }
29 |
30 | off(event, fn) {
31 | this._stores = this._stores || {}
32 |
33 | // all
34 | if (!arguments.length) {
35 | this._stores = {}
36 | return
37 | }
38 |
39 | // specific event
40 | const store = this._stores[event]
41 | if (!store) return
42 |
43 | // remove all handlers
44 | if (arguments.length === 1) {
45 | delete this._stores[event]
46 | return
47 | }
48 |
49 | // remove specific handler
50 | let cb
51 | for (let i = 0, len = store.length; i < len; i++) {
52 | cb = store[i].cb
53 | if (cb === fn) {
54 | store.splice(i, 1)
55 | break
56 | }
57 | }
58 | return
59 | }
60 | }
61 |
62 | module.exports = Event
63 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "miniprogram",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "tim-wx-sdk": {
8 | "version": "2.6.3",
9 | "resolved": "https://registry.npmjs.org/tim-wx-sdk/-/tim-wx-sdk-2.6.3.tgz",
10 | "integrity": "sha512-VwTv0x7fidjpyLDO+ZuIWcQ49uw/xFFhNkQcNN854Y5Lg/+c6HlQxi/vErh0M9A7eHc7zuDr3Or2PF14V5PA2w=="
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "miniprogram",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "app.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "keywords": [],
10 | "author": "",
11 | "license": "ISC",
12 | "dependencies": {
13 | "tim-wx-sdk": "^2.7.2"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/pages/main/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "pageOrientation": "portrait",
3 | "usingComponents": {}
4 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/pages/main/main.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 以下将展示腾讯云行业解决方案,由腾讯云提供技术支持
4 |
5 |
6 |
7 |
8 |
9 | {{item.title}}
10 | {{item.desc}}
11 |
12 |
13 |
14 |
15 | 更多功能
16 | 敬请期待
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/pages/main/main.wxss:
--------------------------------------------------------------------------------
1 | /* pages/main/main.wxss */
2 | .mainUI {
3 | position: relative;
4 | width: 100vw;
5 | height: 100vh;
6 | background-image: url(https://main.qcloudimg.com/raw/20db9863af9f7e57a7be64dbac685691.png);
7 | background-color: #1F2531;
8 | background-repeat: no-repeat;
9 | background-size: 60%;
10 | background-position: center bottom;
11 | }
12 |
13 | .tips {
14 | color: #ffffff;
15 | font-size: 12px;
16 | text-align: center;
17 | padding: 5vw 0 5vw;
18 | }
19 |
20 | .guide-box {
21 | text-align: center;
22 | }
23 |
24 | .guide {
25 | display: inline-block;
26 | width: 30vw;
27 | height: 33vw;
28 | background-color: rgba(0, 0, 0, 0.55);
29 | text-align: center;
30 | margin: 1.5px;
31 | vertical-align: top;
32 | }
33 |
34 | .guide-nomore {
35 | display: inline-block;
36 | width: 30vw;
37 | height: 33vw;
38 | text-align: center;
39 | margin: 1.5px;
40 | vertical-align: top;
41 | }
42 |
43 | .guide-nomore-bk {
44 | background-color: rgba(0, 0, 0, 0.3);
45 | }
46 |
47 | .guide_icon {
48 | display: block;
49 | width: 72rpx;
50 | height: 72rpx;
51 | margin: 60rpx auto 0;
52 | }
53 |
54 | .guide_label {
55 | display: block;
56 | margin-top: 30rpx;
57 | color: #CFE4FF;
58 | font-size: 28rpx;
59 | }
60 |
61 | .guide_desc {
62 | display: block;
63 | margin-top: 2px;
64 | color: #888;
65 | font-size: 22rpx;
66 | white-space: nowrap;
67 | }
68 |
69 | .guide_nomore_label {
70 | margin-top: 36px;
71 | color: rgba(256, 256, 256, 0.3);
72 | font-size: 14px;
73 | }
74 |
75 | .logo-box {
76 | position: absolute;
77 | width: 100vw;
78 | bottom: 36rpx;
79 | text-align: center;
80 | }
81 |
82 | .logo {
83 | width: 160rpx;
84 | height: 44rpx;
85 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/pages/tic/account.js:
--------------------------------------------------------------------------------
1 | var TEST_ACCOUNT = {
2 | "sdkappid": 1400127140,
3 | "users": [
4 | {
5 | "userId": "miniprogram_tic_201",
6 | "userToken": "eJwtjT0PgjAYhP9LVw15W1sgJC5OYtAFXFxIQwt9JYWmNMaP*N8lyHS55y53H1IVZfTQnmSERUC2i0elh4AtLtjigM6PnZe2DtjUDOham1QvnUNFMsoBKEtm*Sf66dDrmQshGMBKA9qFpRxSzuluXcFuftkoZm8J5PJ4cO4tXq27aGOCvPriFN-jvjRlPjZY*fO0J98fm5I3OA__"
7 | },
8 | {
9 | "userId": "miniprogram_tic_202",
10 | "userToken": "eJwtjcEKgkAYhN9lz2G-626a0CGIRDE9KFQiiOW6-MjasolE0bsn5mmYb4aZD8njzBqFIT6hFpDV7LER-YAtzlhhj9o8pKlVNeC9okCX2rPpaq2xIb7NAGzqTvJPxEujERPnnFOAhQ6oZuYx8Jjj8GUF5fTiZKecMTWW6yh9H5JbqNsgCaNNUKR79yrP3eVYpJmI5TaWO-L9AbfiNjY_"
11 | },
12 | {
13 | "userId": "miniprogram_tic_203",
14 | "userToken": "eJwtjVELgjAcxL-LXg35u00cQk8RCEZEGWUvYm3aX3GtpVlE3z0xn4773XH3Iclq5z6VJSGhLpDZ6FEq3WKBI25Qo7G30uZN1uIlo8Cm2kPWuTEoSehxAI8Gg-wT9TJo1cB936cAE22xGZngIDjjYlrBcnjZpusDO-U6iEQsu326TJzqHBf1cRM5HevelleS3a-5oq-n5PsDlxM24A__"
15 | },
16 | {
17 | "userId": "miniprogram_tic_204",
18 | "userToken": "eJwtjVELgjAcxL-LnkP*Gxua0EshEUUvpZQvIm3KP9sac0kSffdk*XTc7467DzkfTtGgHEkJi4AsgkepjMcGA9Zo0Lpn62pdebxVDPhc62VXW4uSpJQDUBZP8k-U26JTExdCMICZetSBJRwSLiidV7CdXrqxje*sKEw32G2GWDZWZcd*o*VjnbnldXxdhnKvdrnJV*T7A7qUN98_"
19 | },
20 | {
21 | "userId": "miniprogram_tic_205",
22 | "userToken": "eJwtjcsKwjAURP8lW6XexKaWggs3BaE7XYlQinl4I0ljGmyt*O*W2tUwZ4aZDzlXp*QlAykIS4CsZ49CuogKZ2zRoQ*tDo2tI95qBnypdeLReI*CFDQFoGw3yT*Rg8cgJ845ZwALjWhnlqeQp5zlywrq6UXTMetD1rnR9gp7URo73qOJZdVBe7luTPuGo9qu6HM47Mn3BwNWOEg_"
23 | }
24 | ]
25 | }
26 |
27 | module.exports = TEST_ACCOUNT;
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/pages/tic/room_canvas/index/index.js:
--------------------------------------------------------------------------------
1 | const TEST_ACCOUNT = require('../../account');
2 |
3 | Page({
4 | data: {
5 | sdkAppId: TEST_ACCOUNT.sdkappid,
6 | array: TEST_ACCOUNT.users,
7 | roomID: 0,
8 | role: 0, // 0 学生, 1: 老师
9 | index: Math.floor((Math.random() * TEST_ACCOUNT.users.length))
10 | },
11 |
12 | bindPickerChange: function (e) {
13 | console.log('picker发送选择改变,携带值为', e.detail.value)
14 | this.setData({
15 | index: e.detail.value
16 | })
17 | },
18 |
19 | bindRoomID: function (e) {
20 | var self = this;
21 | self.setData({
22 | roomID: e.detail.value
23 | });
24 | },
25 |
26 | onLoad: function () {},
27 |
28 | radioChange(ev) {
29 | this.setData({
30 | role: ev.detail.value * 1
31 | })
32 | },
33 |
34 | onClick() {
35 | if (!this.data.roomID || isNaN(this.data.roomID)) {
36 | wx.showToast({
37 | icon: 'none',
38 | title: '房间号只支持32位整型数字'
39 | })
40 | return;
41 | }
42 | var url = `/pages/tic/room_canvas/room/room?sdkAppId=${this.data.sdkAppId}&userId=${TEST_ACCOUNT.users[this.data.index]['userId']}&userSig=${TEST_ACCOUNT.users[this.data.index]['userToken']}&roomID=${this.data.roomID}&role=${this.data.role}`;
43 | wx.navigateTo({
44 | url: url
45 | });
46 | }
47 | })
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/pages/tic/room_canvas/index/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "互动课堂",
3 | "usingComponents": {
4 | }
5 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/pages/tic/room_canvas/index/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 账号
4 |
5 |
6 | {{array[index]['userId']}}
7 |
8 |
9 |
10 |
11 |
12 | 课堂ID
13 |
14 |
15 |
16 |
17 |
18 | 角色
19 |
20 |
21 |
25 |
29 |
30 |
31 |
32 | webrtcroom + canvas: 不支持动画PPT【技术受限,不推荐使用】
33 |
34 | 体验互通的时候,请选择不同的账号
35 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/pages/tic/room_canvas/index/index.wxss:
--------------------------------------------------------------------------------
1 | .container-box {
2 | background-image: url(https://main.qcloudimg.com/raw/20db9863af9f7e57a7be64dbac685691.png);
3 | background-color: #1F2531;
4 | background-repeat: no-repeat;
5 | background-size: 60%;
6 | background-position: center bottom;
7 | height: 100vh;
8 | overflow: hidden;
9 | color: #fff;
10 | }
11 |
12 |
13 | button {
14 | margin: 4vh auto;
15 | width: 40vw;
16 | font-size: 14px;
17 | }
18 |
19 | .section {
20 | display: flex;
21 | margin: 50rpx 10rpx;
22 | }
23 |
24 | .section .section_title {
25 | flex: 1;
26 | font-size: 32rpx;
27 | color: #fff;
28 | text-align: right;
29 | }
30 |
31 | .section .section_input {
32 | flex: 3;
33 | font-size: 32rpx;
34 | color: #fff;
35 | margin: 0 50rpx;
36 | }
37 |
38 | .section .section_input input,
39 | .section .section_input picker {
40 | background-color: transparent;
41 | border-bottom: 1px solid #577785;
42 | text-align: center;
43 | font-size: 16px;
44 | padding: 5rpx 0;
45 | }
46 |
47 | .section .dropdowns-box {
48 | position: relative;
49 | }
50 |
51 | .section .dropdowns-box .dropdowns {
52 | position: absolute;
53 | top: 0;
54 | right: 0;
55 | margin-right: 10rpx;
56 | width: 20rpx;
57 | height: 20rpx;
58 | border-left: 1rpx solid #fff;
59 | border-top: 1rpx solid #fff;
60 | transform: rotate(225deg);
61 | }
62 |
63 | .mode-group label {
64 | display: block;
65 | margin-bottom: 10rpx;
66 | }
67 |
68 | .tips {
69 | text-align: center;
70 | font-size: 24rpx;
71 | margin-bottom: 10rpx;
72 | }
73 |
74 | .btn-joinclass {
75 | height: 38px;
76 | margin-top: 20px;
77 | line-height: 38px;
78 | background-color: #0a818c;
79 | border: 1px solid #0a818c;
80 | color: #dcebeb;
81 | outline: none;
82 | border-radius: 2px;
83 | font-size: 12px;
84 | padding: 0 20px;
85 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/pages/tic/room_canvas/room/room.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "互动课堂",
3 | "disableScroll": true,
4 | "disableSwipeBack": true,
5 | "usingComponents": {
6 | "trtc-room": "/components/trtc-room/trtc-room",
7 | "tic-component": "/components/tic-component/tic-component"
8 | }
9 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/board1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/board1.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/board2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/board2.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/fullscreen.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-clear.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-curve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-curve.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-eraser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-eraser.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-line.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-next.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-prev.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-rect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-rect.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/icon-upload.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/logo.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/smallscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/smallscreen.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/resources/images/tic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/resources/images/tic.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/sitemap.json:
--------------------------------------------------------------------------------
1 | {
2 | "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
3 | "rules": [{
4 | "action": "allow",
5 | "page": "*"
6 | }]
7 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/home-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/home-bg.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-hand.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-setting.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-share-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-share.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-signal-1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/icon-signal-1@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-signal-2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/icon-signal-2@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-signal-3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/icon-signal-3@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-student.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-teacher.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-voice-actived.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-voice-disabled-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/icon-voice.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/record-hover@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/record-hover@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/record@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/record@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tencentyun-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tencentyun-icon.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-add-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-add-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-add.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-brush-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-brush-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-brush.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-brush.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-choose-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-choose-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-choose.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-choose.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-choose2-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-choose2-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-choose2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-choose2.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-rubber-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-rubber-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-rubber.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-rubber.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-text-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-text-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/tool/icon-text.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/麦克风@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/麦克风@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/麦克风备份 5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/麦克风备份 5@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/麦克风备份 6@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/麦克风备份 6@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/miniprogram/static/image/麦克风备份@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + canvas/miniprogram/static/image/麦克风备份@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + canvas/project.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "miniprogramRoot": "miniprogram/",
3 | "cloudfunctionRoot": "cloudfunctions/",
4 | "setting": {
5 | "urlCheck": true,
6 | "es6": true,
7 | "postcss": true,
8 | "preloadBackgroundData": false,
9 | "minified": true,
10 | "newFeature": true,
11 | "autoAudits": false,
12 | "coverView": true,
13 | "showShadowRootInWxmlPanel": true,
14 | "scopeDataCheck": false,
15 | "enhance": false,
16 | "checkInvalidKey": true,
17 | "checkSiteMap": true,
18 | "uploadWithSourceMap": true,
19 | "babelSetting": {
20 | "ignore": [],
21 | "disablePlugins": [],
22 | "outputPath": ""
23 | },
24 | "useCompilerModule": true,
25 | "userConfirmedUseCompilerModuleSwitch": false
26 | },
27 | "appid": "wx748277861c01d4be",
28 | "projectname": "webrtc-room%20%2B%20canvas",
29 | "libVersion": "2.9.0",
30 | "simulatorType": "wechat",
31 | "simulatorPluginLibVersion": {},
32 | "condition": {
33 | "search": {
34 | "current": -1,
35 | "list": []
36 | },
37 | "conversation": {
38 | "current": -1,
39 | "list": []
40 | },
41 | "plugin": {
42 | "current": -1,
43 | "list": []
44 | },
45 | "game": {
46 | "list": []
47 | },
48 | "miniprogram": {
49 | "current": 0,
50 | "list": [
51 | {
52 | "id": -1,
53 | "name": "db guide",
54 | "pathName": "pages/databaseGuide/databaseGuide"
55 | }
56 | ]
57 | }
58 | }
59 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/clear.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/clear1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/clear1.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/cleardraw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/cleardraw.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/default.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/default@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/eraser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/eraser.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/fill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/fill.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/index-sound.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/index_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/index_bg.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/index_logox1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/index_logox1.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/index_logox2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/index_logox2.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/left.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/logo.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/logo@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/rec_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/rec_select.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/right.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/full-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/full-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/full.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/full.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/head-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/head-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/head-refuse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/head-refuse.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/not-full-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/not-full-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/not-full.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/student-ft/not-full.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/voice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/voice.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/voice@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/img/voice@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/sprite/mini-class-201801301143.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/css/sprite/mini-class-201801301143.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/webview链接页面源码/webview-source/libs/thirdpart/elementui/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/webview链接页面源码/webview-source/libs/thirdpart/elementui/fonts/element-icons.woff
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/cloudfunctions/login/index.js:
--------------------------------------------------------------------------------
1 | // 云函数模板
2 | // 部署:在 cloud-functions/login 文件夹右击选择 “上传并部署”
3 |
4 | /**
5 | * 这个示例将经自动鉴权过的小程序用户 openid 返回给小程序端
6 | *
7 | * event 参数包含
8 | * - 小程序端调用传入的 data
9 | * - 经过微信鉴权直接可信的用户唯一标识 openid
10 | *
11 | */
12 | exports.main = (event, context) => {
13 | console.log(event)
14 | console.log(context)
15 |
16 | // 可执行其他自定义逻辑
17 | // console.log 的内容可以在云开发云函数调用日志查看
18 |
19 | return {
20 | openid: event.userInfo.openId,
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/app.js:
--------------------------------------------------------------------------------
1 | App({
2 | onLaunch: function () {
3 | console.log('App Launch')
4 | },
5 | onShow: function () {
6 | console.log('App Show')
7 | },
8 | onHide: function () {
9 | console.log('App Hide')
10 | },
11 | globalData: {
12 | hasLogin: false
13 | }
14 | });
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "pages": [
3 | "pages/tic/room_webview/index/index",
4 | "pages/tic/room_webview/room/room"
5 | ],
6 | "window": {
7 | "pageOrientation": "auto",
8 | "navigationBarTextStyle": "black",
9 | "navigationBarTitleText": "腾讯云互动课堂",
10 | "navigationBarBackgroundColor": "#f8f8f8",
11 | "backgroundColor": "#f8f8f8",
12 | "renderingMode": "seperated"
13 | },
14 | "networkTimeout": {
15 | "request": 10000,
16 | "connectSocket": 10000,
17 | "uploadFile": 10000,
18 | "downloadFile": 10000
19 | },
20 | "debug": true,
21 | "sitemapLocation": "sitemap.json"
22 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/app.wxss:
--------------------------------------------------------------------------------
1 | button {
2 | padding: 0;
3 | margin: 0;
4 | }
5 |
6 | button::after {
7 | border: none;
8 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/components/trtc-room/model/pusher.js:
--------------------------------------------------------------------------------
1 | import { DEFAULT_PUSHER_CONFIG } from '../common/constants.js'
2 |
3 | class Pusher {
4 | constructor(options) {
5 | Object.assign(this, DEFAULT_PUSHER_CONFIG, {
6 | isVisible: true, // 手Q初始化时不能隐藏 puser和player 否则黑屏
7 | }, options)
8 | }
9 | /**
10 | * 通过wx.createLivePusherContext 获取 context
11 | * @param {Object} context 组件上下文
12 | * @returns {Object} livepusher context
13 | */
14 | getPusherContext(context) {
15 | if (!this.pusherContext) {
16 | this.pusherContext = wx.createLivePusherContext(context)
17 | }
18 | return this.pusherContext
19 | }
20 | reset() {
21 | console.log('Pusher reset', this.pusherContext)
22 | if (this.pusherContext) {
23 | console.log('Pusher pusherContext.stop()')
24 | this.pusherContext.stop()
25 | this.pusherContext = null
26 | }
27 | Object.assign(this, DEFAULT_PUSHER_CONFIG, {
28 | isVisible: true,
29 | })
30 | }
31 | }
32 |
33 | export default Pusher
34 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/components/trtc-room/model/stream.js:
--------------------------------------------------------------------------------
1 | // 一个stream 对应一个 player
2 | import { DEFAULT_PLAYER_CONFIG } from '../common/constants.js'
3 |
4 | class Stream {
5 | constructor(options) {
6 | Object.assign(this, DEFAULT_PLAYER_CONFIG, {
7 | userID: '', // 该stream 关联的userID
8 | streamType: '', // stream 类型 [main small] aux
9 | streamID: '', // userID + '_' + streamType
10 | isVisible: true, // 手Q初始化时不能隐藏 puser和player 否则黑屏。iOS 微信初始化时不能隐藏,否则同层渲染失败,player会置顶
11 | hasVideo: false,
12 | hasAudio: false,
13 | volume: 0, // 音量大小 0~100
14 | playerContext: undefined, // playerContext 依赖component context来获取,目前只能在渲染后获取
15 | }, options)
16 | }
17 | setProperty(options) {
18 | Object.assign(this, options)
19 | }
20 | reset() {
21 | if (this.playerContext) {
22 | this.playerContext.stop()
23 | this.playerContext = undefined
24 | }
25 | Object.assign(this, DEFAULT_PLAYER_CONFIG, {
26 | userID: '', // 该stream 关联的userID
27 | streamType: '', // stream 类型 [main small] aux
28 | streamID: '',
29 | isVisible: true,
30 | hasVideo: false,
31 | hasAudio: false,
32 | volume: 0, // 音量大小 0~100
33 | playerContext: undefined,
34 | })
35 | }
36 | }
37 |
38 | export default Stream
39 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/components/trtc-room/model/user.js:
--------------------------------------------------------------------------------
1 | class User {
2 | constructor(options) {
3 | Object.assign(this, {
4 | userID: '',
5 | // hasMainStream: false, // 触发 1034 且stream type 为 main 即为true
6 | // hasAuxStream: false, // 触发 1034 且stream type 为 aux 即为true
7 | // hasSmallStream: false, // 触发 1034 且stream type 为 small 即为true
8 | streams: {
9 | // main: mainStream
10 | // aux: auxStream
11 | }, // 有0~2个Stream, 进房没有推流,main aux, small 特殊处理,small 和 main 同时只播放一路
12 | // stream 是用于渲染 live-player 的数据源
13 | }, options)
14 | }
15 | }
16 |
17 | export default User
18 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/components/trtc-room/template/custom/custom.wxss:
--------------------------------------------------------------------------------
1 | /* 通过方法自定义模式 */
2 | .template-custom {
3 | /* 绝对定位模式 pusher 和 player 都用绝对定位*/
4 | display: flex;
5 | background-repeat: no-repeat;
6 | background-size: cover;
7 | width: 100%;
8 | height: 100%;
9 | position: relative;
10 | }
11 |
12 |
13 | .template-custom live-pusher,
14 | .template-custom live-player {
15 | width: 100%;
16 | height: 100%;
17 | }
18 |
19 | @media (orientation: landscape) {
20 | .template-custom .pusher-container {
21 | position: absolute;
22 | display: inline-block;
23 | top: 0vh;
24 | left: 0vw;
25 | height: 50vh;
26 | width: 100%;
27 | overflow: hidden;
28 | text-align: center;
29 | }
30 |
31 | .template-custom .players-container {
32 | position: absolute;
33 | display: inline-block;
34 | top: 50vh;
35 | left: 0vw;
36 | height: 50vh;
37 | width: 100%;
38 | text-align: center;
39 | vertical-align: top;
40 | }
41 |
42 | .template-custom .player-container {
43 | width: 50%;
44 | height: 25vh;
45 | }
46 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/components/trtc-room/template/custom_canvas/custom_canvas.wxss:
--------------------------------------------------------------------------------
1 | /* 通过方法自定义模式 */
2 | .template-custom_canvas {
3 | /* 绝对定位模式 pusher 和 player 都用绝对定位*/
4 | display: flex;
5 | flex-wrap: wrap;
6 | width: 100%;
7 | height: 100%;
8 | align-content: flex-start;
9 | }
10 |
11 |
12 | .template-custom_canvas .view-container {
13 | width: 25%;
14 | height: 25%;
15 | }
16 |
17 |
18 | .template-custom_canvas live-pusher,
19 | .template-custom_canvas live-player {
20 | width: 100%;
21 | height: 100%;
22 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/components/trtc-room/trtc-room.json:
--------------------------------------------------------------------------------
1 | {
2 | "component": true,
3 | "usingComponents": {}
4 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/components/trtc-room/trtc-room.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/components/trtc-room/trtc-room.wxss:
--------------------------------------------------------------------------------
1 | @import "./template/custom/custom.wxss";
2 | @import "./template/custom_canvas/custom_canvas.wxss";
3 |
4 | .pusher {
5 | width: 100%;
6 | height: 100%;
7 | }
8 |
9 | .player {
10 | width: 100%;
11 | height: 100%;
12 | }
13 |
14 |
15 | .trtc-room-container {
16 | display: block;
17 | width: 100%;
18 | height: 100%;
19 | }
20 |
21 | .trtc-room-container .btn {
22 | display: inline-block;
23 | width: auto;
24 | height: 60rpx;
25 | min-height: 60rpx;
26 | line-height: 60rpx;
27 | font-size: 12px;
28 | font-weight: normal;
29 | padding: 0 10rpx;
30 | color: #006eff;
31 | background-color: #f2f2f2;
32 | margin: 0 16rpx;
33 | }
34 |
35 | .trtc-room-container .btn.active {
36 | color: #f2f2f2;
37 | background-color: #006eff;
38 | }
39 |
40 | .trtc-room-container .btn-hover {
41 | background-color: #d1d1d1;
42 | }
43 |
44 | .none,
45 | .view-container.none,
46 | .template-grid .view-container.none,
47 | .template-1v1 .view-container.none {
48 | display: none !important;
49 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/components/trtc-room/utils/compare-version.js:
--------------------------------------------------------------------------------
1 | export default function compareVersion(v1, v2) {
2 | v1 = v1.split('.')
3 | v2 = v2.split('.')
4 | const len = Math.max(v1.length, v2.length)
5 | while (v1.length < len) {
6 | v1.push('0')
7 | }
8 | while (v2.length < len) {
9 | v2.push('0')
10 | }
11 | for (let i = 0; i < len; i++) {
12 | const num1 = parseInt(v1[i])
13 | const num2 = parseInt(v2[i])
14 | if (num1 > num2) {
15 | return 1
16 | } if (num1 < num2) {
17 | return -1
18 | }
19 | }
20 | return 0
21 | }
22 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/components/trtc-room/utils/environment.js:
--------------------------------------------------------------------------------
1 | import compareVersion from './compare-version.js'
2 | const TAG_NAME = 'TRTC-ROOM'
3 |
4 | const env = wx ? wx : qq
5 | if (!env) {
6 | console.error(TAG_NAME, '不支持当前小程序环境')
7 | }
8 | const systemInfo = env.getSystemInfoSync()
9 | const safeArea = systemInfo.safeArea
10 | if (systemInfo.system === 'iOS 13.3' || (systemInfo.model === 'iPhoneX' && systemInfo.system === 'iOS 13.3.1')) {
11 | // audio-volume-type = media
12 | console.log('use media audio volume type')
13 | }
14 | console.log(TAG_NAME, 'SystemInfo', systemInfo)
15 | let isNewVersion
16 | if (typeof qq !== 'undefined') {
17 | isNewVersion = true
18 | } else if (typeof wx !== 'undefined') {
19 | if (compareVersion(systemInfo.version, '7.0.8') >= 0 || // mobile pc
20 | (compareVersion(systemInfo.version, '2.4.0') >= 0 && compareVersion(systemInfo.version, '6.0.0') < 0) && // mac os
21 | compareVersion(systemInfo.SDKVersion, '2.10.0') >= 0) {
22 | isNewVersion = true
23 | } else {
24 | isNewVersion = false
25 | }
26 | }
27 |
28 | export const IS_TRTC = true || isNewVersion
29 | export const IS_QQ = typeof qq !== 'undefined'
30 | export const IS_WX = typeof wx !== 'undefined'
31 | export const IS_IOS = /iOS/i.test(systemInfo.system)
32 | export const IS_ANDROID = /Android/i.test(systemInfo.system)
33 | export const IS_MAC = /mac/i.test(systemInfo.system)
34 | export const APP_VERSION = systemInfo.version
35 | export const LIB_VERSION = (function () {
36 | if (systemInfo.SDKBuild) {
37 | return systemInfo.SDKVersion + '-' + systemInfo.SDKBuild
38 | }
39 | return systemInfo.SDKVersion
40 | })()
41 |
42 | let isFullscreenDevie = false
43 | if (systemInfo.screenHeight > safeArea.bottom) {
44 | // if (/iphone\s{0,}x/i.test(systemInfo.model)) {
45 | isFullscreenDevie = true
46 | }
47 |
48 | export const IS_FULLSCREEN_DEVICE = isFullscreenDevie
49 |
50 | console.log(TAG_NAME, 'APP_VERSION:', APP_VERSION, ' LIB_VERSION:', LIB_VERSION, ' is new version:', IS_TRTC)
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/components/trtc-room/utils/event.js:
--------------------------------------------------------------------------------
1 | class Event {
2 | on(event, fn, ctx) {
3 | if (typeof fn !== 'function') {
4 | console.error('listener must be a function')
5 | return
6 | }
7 |
8 | this._stores = this._stores || {};
9 | (this._stores[event] = this._stores[event] || []).push({ cb: fn, ctx: ctx })
10 | }
11 |
12 | emit(event) {
13 | this._stores = this._stores || {}
14 | let store = this._stores[event]
15 | let args
16 |
17 | if (store) {
18 | store = store.slice(0)
19 | args = [].slice.call(arguments, 1),
20 | args[0] = {
21 | eventCode: event,
22 | data: args[0],
23 | }
24 | for (let i = 0, len = store.length; i < len; i++) {
25 | store[i].cb.apply(store[i].ctx, args)
26 | }
27 | }
28 | }
29 |
30 | off(event, fn) {
31 | this._stores = this._stores || {}
32 |
33 | // all
34 | if (!arguments.length) {
35 | this._stores = {}
36 | return
37 | }
38 |
39 | // specific event
40 | const store = this._stores[event]
41 | if (!store) return
42 |
43 | // remove all handlers
44 | if (arguments.length === 1) {
45 | delete this._stores[event]
46 | return
47 | }
48 |
49 | // remove specific handler
50 | let cb
51 | for (let i = 0, len = store.length; i < len; i++) {
52 | cb = store[i].cb
53 | if (cb === fn) {
54 | store.splice(i, 1)
55 | break
56 | }
57 | }
58 | return
59 | }
60 | }
61 |
62 | module.exports = Event
63 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/node_modules/tim-wx-sdk/README.md:
--------------------------------------------------------------------------------
1 | 本文主要介绍如何快速地将腾讯云 IM SDK 集成到您的小程序项目中,只要按照如下步骤进行配置,就可以完成 SDK 的集成工作。
2 |
3 | ## 准备工作
4 | 在集成 Web SDK 前,请确保您已完成以下步骤,请参见 [一分钟跑通 Demo](https://cloud.tencent.com/document/product/269/36838)。
5 | - 创建了腾讯云即时通信 IM 应用,并获取到 SDKAppID。
6 | - 获取密钥信息。
7 |
8 | ## 集成 SDK
9 | 您可以通过以下方式集成 SDK:
10 |
11 | ### NPM 集成
12 | 在您的项目中使用 npm 安装相应的 IM SDK 依赖。
13 |
14 | #### 小程序项目:
15 | ```javascript
16 | // IM 小程序 SDK
17 | npm install tim-wx-sdk --save
18 | // 发送图片、文件等消息需要的 COS SDK
19 | npm install cos-wx-sdk-v5 --save
20 | ```
21 | 在项目脚本里引入模块,并初始化。
22 |
23 | ```javascript
24 | import TIM from 'tim-wx-sdk';
25 | import COS from "cos-wx-sdk-v5";
26 |
27 | let options = {
28 | SDKAppID: 0 // 接入时需要将 0 替换为您的云通信应用的 SDKAppID
29 | };
30 | // 创建 SDK 实例,`TIM.create()`方法对于同一个 `SDKAppID` 只会返回同一份实例
31 | let tim = TIM.create(options); // SDK 实例通常用 tim 表示
32 |
33 | // 设置 SDK 日志输出级别,详细分级请参见 setLogLevel 接口的说明
34 | tim.setLogLevel(0); // 普通级别,日志量较多,接入时建议使用
35 | // tim.setLogLevel(1); // release级别,SDK 输出关键信息,生产环境时建议使用
36 |
37 | // 注册 COS SDK 插件
38 | tim.registerPlugin({'cos-wx-sdk': COS});
39 |
40 | // 接下来可以通过 tim 进行事件绑定和构建 IM 应用
41 | ```
42 |
43 | 更详细的初始化流程请看 [SDK 初始化例子](https://imsdk-1252463788.file.myqcloud.com/IM_DOC/Web/SDK.html)
44 |
45 | #### 相关资源
46 | - [SDK 更新日志](https://cloud.tencent.com/document/product/269/38492)
47 | - [SDK 接口文档](https://imsdk-1252463788.file.myqcloud.com/IM_DOC/Web/SDK.html)
48 | - [常见问题](https://imsdk-1252463788.file.myqcloud.com/IM_DOC/Web/tutorial-01-faq.html)
49 | - [IM 小程序 Demo](https://github.com/tencentyun/TIMSDK/tree/master/WXMini)
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/node_modules/tim-wx-sdk/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "tim-wx-sdk@2.6.3",
3 | "_id": "tim-wx-sdk@2.6.3",
4 | "_inBundle": false,
5 | "_integrity": "sha512-VwTv0x7fidjpyLDO+ZuIWcQ49uw/xFFhNkQcNN854Y5Lg/+c6HlQxi/vErh0M9A7eHc7zuDr3Or2PF14V5PA2w==",
6 | "_location": "/tim-wx-sdk",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "tim-wx-sdk@2.6.3",
12 | "name": "tim-wx-sdk",
13 | "escapedName": "tim-wx-sdk",
14 | "rawSpec": "2.6.3",
15 | "saveSpec": null,
16 | "fetchSpec": "2.6.3"
17 | },
18 | "_requiredBy": [
19 | "#USER",
20 | "/"
21 | ],
22 | "_resolved": "https://registry.npmjs.org/tim-wx-sdk/-/tim-wx-sdk-2.6.3.tgz",
23 | "_shasum": "4cd90fb8cace240dda68c398391169480f5aee39",
24 | "_spec": "tim-wx-sdk@2.6.3",
25 | "_where": "E:\\github_workspace\\neal_mini\\miniprogram",
26 | "author": {
27 | "name": "Tencent Cloud Terminal R&D Center"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/tencentyun/TIMSDK/issues"
31 | },
32 | "bundleDependencies": false,
33 | "deprecated": false,
34 | "description": "Tencent Cloud IM SDK for WX mini app",
35 | "homepage": "https://github.com/tencentyun/TIMSDK#readme",
36 | "keywords": [
37 | "即时通信",
38 | "IM",
39 | "腾讯云IM",
40 | "即时通讯",
41 | "通信"
42 | ],
43 | "license": "ISC",
44 | "main": "tim-wx.js",
45 | "name": "tim-wx-sdk",
46 | "repository": {
47 | "type": "git",
48 | "url": "git+ssh://git@github.com/tencentyun/TIMSDK.git"
49 | },
50 | "version": "2.6.3"
51 | }
52 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "miniprogram",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "tim-wx-sdk": {
8 | "version": "2.6.3",
9 | "resolved": "https://registry.npmjs.org/tim-wx-sdk/-/tim-wx-sdk-2.6.3.tgz",
10 | "integrity": "sha512-VwTv0x7fidjpyLDO+ZuIWcQ49uw/xFFhNkQcNN854Y5Lg/+c6HlQxi/vErh0M9A7eHc7zuDr3Or2PF14V5PA2w=="
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "miniprogram",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "app.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "keywords": [],
10 | "author": "",
11 | "license": "ISC",
12 | "dependencies": {
13 | "tim-wx-sdk": "^2.7.2"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/pages/tic/account.js:
--------------------------------------------------------------------------------
1 | var TEST_ACCOUNT = {
2 | "sdkappid": 1400127140,
3 | "users": [
4 | {
5 | "userId": "miniprogram_tic_201",
6 | "userToken": "eJwtjT0PgjAYhP9LVw15W1sgJC5OYtAFXFxIQwt9JYWmNMaP*N8lyHS55y53H1IVZfTQnmSERUC2i0elh4AtLtjigM6PnZe2DtjUDOham1QvnUNFMsoBKEtm*Sf66dDrmQshGMBKA9qFpRxSzuluXcFuftkoZm8J5PJ4cO4tXq27aGOCvPriFN-jvjRlPjZY*fO0J98fm5I3OA__"
7 | },
8 | {
9 | "userId": "miniprogram_tic_202",
10 | "userToken": "eJwtjcEKgkAYhN9lz2G-626a0CGIRDE9KFQiiOW6-MjasolE0bsn5mmYb4aZD8njzBqFIT6hFpDV7LER-YAtzlhhj9o8pKlVNeC9okCX2rPpaq2xIb7NAGzqTvJPxEujERPnnFOAhQ6oZuYx8Jjj8GUF5fTiZKecMTWW6yh9H5JbqNsgCaNNUKR79yrP3eVYpJmI5TaWO-L9AbfiNjY_"
11 | },
12 | {
13 | "userId": "miniprogram_tic_203",
14 | "userToken": "eJwtjVELgjAcxL-LXg35u00cQk8RCEZEGWUvYm3aX3GtpVlE3z0xn4773XH3Iclq5z6VJSGhLpDZ6FEq3WKBI25Qo7G30uZN1uIlo8Cm2kPWuTEoSehxAI8Gg-wT9TJo1cB936cAE22xGZngIDjjYlrBcnjZpusDO-U6iEQsu326TJzqHBf1cRM5HevelleS3a-5oq-n5PsDlxM24A__"
15 | },
16 | {
17 | "userId": "miniprogram_tic_204",
18 | "userToken": "eJwtjVELgjAcxL-LnkP*Gxua0EshEUUvpZQvIm3KP9sac0kSffdk*XTc7467DzkfTtGgHEkJi4AsgkepjMcGA9Zo0Lpn62pdebxVDPhc62VXW4uSpJQDUBZP8k-U26JTExdCMICZetSBJRwSLiidV7CdXrqxje*sKEw32G2GWDZWZcd*o*VjnbnldXxdhnKvdrnJV*T7A7qUN98_"
19 | },
20 | {
21 | "userId": "miniprogram_tic_205",
22 | "userToken": "eJwtjcsKwjAURP8lW6XexKaWggs3BaE7XYlQinl4I0ljGmyt*O*W2tUwZ4aZDzlXp*QlAykIS4CsZ49CuogKZ2zRoQ*tDo2tI95qBnypdeLReI*CFDQFoGw3yT*Rg8cgJ845ZwALjWhnlqeQp5zlywrq6UXTMetD1rnR9gp7URo73qOJZdVBe7luTPuGo9qu6HM47Mn3BwNWOEg_"
23 | }
24 | ]
25 | }
26 |
27 | module.exports = TEST_ACCOUNT;
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/pages/tic/room_webview/index/index.js:
--------------------------------------------------------------------------------
1 | const TEST_ACCOUNT = require('../../account');
2 |
3 | Page({
4 | data: {
5 | sdkAppId: TEST_ACCOUNT.sdkappid,
6 | array: TEST_ACCOUNT.users,
7 | roomID: 0,
8 | role: 0, // 0 学生, 1: 老师
9 | index: Math.floor((Math.random() * TEST_ACCOUNT.users.length))
10 | },
11 |
12 | bindPickerChange: function (e) {
13 | console.log('picker发送选择改变,携带值为', e.detail.value)
14 | this.setData({
15 | index: e.detail.value
16 | })
17 | },
18 |
19 | bindRoomID: function (e) {
20 | var self = this;
21 | self.setData({
22 | roomID: e.detail.value
23 | });
24 | },
25 |
26 | onLoad: function () {},
27 |
28 | radioChange(ev) {
29 | this.setData({
30 | role: ev.detail.value * 1
31 | })
32 | },
33 |
34 | onClick() {
35 | if (!this.data.roomID || isNaN(this.data.roomID)) {
36 | wx.showToast({
37 | icon: 'none',
38 | title: '房间号只支持32位整型数字'
39 | })
40 | return;
41 | }
42 | var url = `/pages/tic/room_webview/room/room?sdkAppId=${this.data.sdkAppId}&userId=${TEST_ACCOUNT.users[this.data.index]['userId']}&userSig=${TEST_ACCOUNT.users[this.data.index]['userToken']}&roomID=${this.data.roomID}&role=${this.data.role}`;
43 | wx.navigateTo({
44 | url: url
45 | });
46 | }
47 | })
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/pages/tic/room_webview/index/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "互动课堂",
3 | "usingComponents": {
4 | }
5 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/pages/tic/room_webview/index/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 账号
4 |
5 |
6 | {{array[index]['userId']}}
7 |
8 |
9 |
10 |
11 |
12 | 课堂ID
13 |
14 |
15 |
16 |
17 |
18 | 角色
19 |
20 |
21 |
25 |
29 |
30 |
31 |
32 | webrtcroom + webview:支持动画PPT【推荐使用】
33 |
34 | 体验互通的时候,请选择不同的账号
35 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/pages/tic/room_webview/index/index.wxss:
--------------------------------------------------------------------------------
1 | .container-box {
2 | background-image: url(https://main.qcloudimg.com/raw/20db9863af9f7e57a7be64dbac685691.png);
3 | background-color: #1F2531;
4 | background-repeat: no-repeat;
5 | background-size: 60%;
6 | background-position: center bottom;
7 | height: 100vh;
8 | overflow: hidden;
9 | color: #fff;
10 | }
11 |
12 |
13 | button {
14 | margin: 4vh auto;
15 | width: 40vw;
16 | font-size: 14px;
17 | }
18 |
19 | .section {
20 | display: flex;
21 | margin: 50rpx 10rpx;
22 | }
23 |
24 | .section .section_title {
25 | flex: 1;
26 | font-size: 32rpx;
27 | color: #fff;
28 | text-align: right;
29 | }
30 |
31 | .section .section_input {
32 | flex: 3;
33 | font-size: 32rpx;
34 | color: #fff;
35 | margin: 0 50rpx;
36 | }
37 |
38 | .section .section_input input,
39 | .section .section_input picker {
40 | background-color: transparent;
41 | border-bottom: 1px solid #577785;
42 | text-align: center;
43 | font-size: 16px;
44 | padding: 5rpx 0;
45 | }
46 |
47 | .section .dropdowns-box {
48 | position: relative;
49 | }
50 |
51 | .section .dropdowns-box .dropdowns {
52 | position: absolute;
53 | top: 0;
54 | right: 0;
55 | margin-right: 10rpx;
56 | width: 20rpx;
57 | height: 20rpx;
58 | border-left: 1rpx solid #fff;
59 | border-top: 1rpx solid #fff;
60 | transform: rotate(225deg);
61 | }
62 |
63 | .mode-group label {
64 | display: block;
65 | margin-bottom: 10rpx;
66 | }
67 |
68 | .tips {
69 | text-align: center;
70 | font-size: 24rpx;
71 | margin-bottom: 10rpx;
72 | }
73 |
74 | .btn-joinclass {
75 | height: 38px;
76 | margin-top: 20px;
77 | line-height: 38px;
78 | background-color: #0a818c;
79 | border: 1px solid #0a818c;
80 | color: #dcebeb;
81 | outline: none;
82 | border-radius: 2px;
83 | font-size: 12px;
84 | padding: 0 20px;
85 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/pages/tic/room_webview/room/room.json:
--------------------------------------------------------------------------------
1 | {
2 | "pageOrientation": "landscape",
3 | "navigationBarTitleText": "互动课堂",
4 | "disableScroll": true,
5 | "disableSwipeBack": true,
6 | "usingComponents": {
7 | "trtc-room": "/components/trtc-room/trtc-room"
8 | }
9 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/pages/tic/room_webview/room/room.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/pages/tic/room_webview/room/room.wxss:
--------------------------------------------------------------------------------
1 | /**index.wxss**/
2 | .tedu-container {
3 | position: relative;
4 | width: 100vw;
5 | height: 100vh;
6 | background-image: url(https://mc.qcloudimg.com/static/img/7da57e0050d308e2e1b1e31afbc42929/bg.png);
7 | background-repeat: no-repeat;
8 | background-size: cover;
9 | overflow: hidden;
10 | background-color: #2A2C2F;
11 | }
12 |
13 | .tedu-class__box {
14 | position: absolute;
15 | background-color: #2A2C2F;
16 | width: 100vw;
17 | height: 100vh;
18 | overflow: hidden;
19 | }
20 |
21 | /* webview */
22 | .tedu-class__box .tedu-webpage-container {
23 | background-color: #2A2C2F;
24 | }
25 |
26 | .tedu-camera__box {
27 | display: block;
28 | width: 100%;
29 | height: 100%;
30 | }
31 |
32 | /* 竖屏*/
33 | @media (orientation: portrait) {
34 | .tedu-camera-chat__box {
35 | width: 100vw !important;
36 | }
37 | }
38 |
39 | /* 横屏*/
40 | @media (orientation: landscape) {
41 | .tedu-camera-chat__box {
42 | flex-direction: column;
43 | height: 100vh !important;
44 | }
45 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/board1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/board1.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/board2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/board2.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/fullscreen.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-clear.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-curve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-curve.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-eraser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-eraser.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-line.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-next.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-prev.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-rect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-rect.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/icon-upload.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/logo.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/smallscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/smallscreen.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/tic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/resources/images/tic.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/sitemap.json:
--------------------------------------------------------------------------------
1 | {
2 | "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
3 | "rules": [{
4 | "action": "allow",
5 | "page": "*"
6 | }]
7 | }
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/home-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/home-bg.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-setting.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-share-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-share.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-signal-1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-signal-1@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-signal-2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-signal-2@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-signal-3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-signal-3@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-student.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-teacher.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-voice-actived.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-voice-disabled-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/icon-voice.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/record-hover@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/record-hover@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/record@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/record@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tencentyun-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tencentyun-icon.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-add-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-add-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-add.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-brush-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-brush-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-brush.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-brush.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-choose-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-choose-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-choose.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-choose.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-choose2-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-choose2-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-choose2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-choose2.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-rubber-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-rubber-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-rubber.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-rubber.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-text-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-text-hover.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/tool/icon-text.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/麦克风@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/麦克风@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/麦克风备份 5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/麦克风备份 5@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/麦克风备份 6@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/麦克风备份 6@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/麦克风备份@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencentyun/TIC/d286735bfff7422d15d700cff66cd3e01ff2a841/小程序/webrtc-room + webview/小程序源码/miniprogram/static/image/麦克风备份@2x.png
--------------------------------------------------------------------------------
/小程序/webrtc-room + webview/小程序源码/project.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "miniprogramRoot": "miniprogram/",
3 | "cloudfunctionRoot": "cloudfunctions/",
4 | "setting": {
5 | "urlCheck": true,
6 | "es6": true,
7 | "enhance": false,
8 | "postcss": true,
9 | "preloadBackgroundData": false,
10 | "minified": true,
11 | "newFeature": true,
12 | "coverView": true,
13 | "autoAudits": false,
14 | "showShadowRootInWxmlPanel": true,
15 | "scopeDataCheck": false,
16 | "checkInvalidKey": true,
17 | "checkSiteMap": true,
18 | "uploadWithSourceMap": true,
19 | "babelSetting": {
20 | "ignore": [],
21 | "disablePlugins": [],
22 | "outputPath": ""
23 | },
24 | "useCompilerModule": true,
25 | "userConfirmedUseCompilerModuleSwitch": false
26 | },
27 | "appid": "wx748277861c01d4be",
28 | "projectname": "%E8%85%BE%E8%AE%AF%E4%BA%91%E4%BA%92%E5%8A%A8%E8%AF%BE%E5%A0%82-webview",
29 | "libVersion": "2.9.0",
30 | "simulatorType": "wechat",
31 | "simulatorPluginLibVersion": {},
32 | "condition": {
33 | "search": {
34 | "current": -1,
35 | "list": []
36 | },
37 | "conversation": {
38 | "current": -1,
39 | "list": []
40 | },
41 | "plugin": {
42 | "current": -1,
43 | "list": []
44 | },
45 | "game": {
46 | "list": []
47 | },
48 | "miniprogram": {
49 | "current": 0,
50 | "list": [
51 | {
52 | "id": -1,
53 | "name": "db guide",
54 | "pathName": "pages/databaseGuide/databaseGuide"
55 | }
56 | ]
57 | }
58 | }
59 | }
--------------------------------------------------------------------------------
/小程序/版本信息.md:
--------------------------------------------------------------------------------
1 | # Release Notes - 小程序
2 |
3 | ## 2020.05.28
4 |
5 | 1. 接入trtc-room,替换webrtc-room
6 | 2. 修复已知bug
7 |
8 | ## 2019.10.22
9 |
10 | 1. bug修复
11 | - 小程序底层调整canvas touch事件不冒泡导致不能涂鸦的问题
12 |
13 | ## 2019.08.22
14 |
15 | 1. bug修复
16 | - 修复webrtcroom获取推流地址的错误码处理
17 |
18 | ## 2019.05.22
19 |
20 | 1. bug修复
21 | - 修复退出课堂bug
22 |
23 | ## 2019.05.15
24 |
25 | 1. 新增功能支持:
26 | - 音视频通信
27 | - 实时音视频通信
28 | - 云通信
29 | - 消息
30 | - 群组
31 | - 关系链管理
32 | - 白板
33 |
34 |
--------------------------------------------------------------------------------
/开通指南.md:
--------------------------------------------------------------------------------
1 | 腾讯云在线教育互动课堂(Tencent Interact Class,TIC)是集实时音视频、交互式白板涂鸦、IM 聊天室、PPT 课件共享、屏幕分享和录制回放等功能于一体的一站式在线教育互动课堂解决方案。在使用互动课堂解决方案前,您需要开通音视频服务、即时通信 IM 服务以及互动白板服务。
2 |
3 | ### 开通互动白板
4 |
5 | 开通互动白板服务,请您在 [腾讯云互动白板](https://cloud.tencent.com/document/product/1137/39924) 开通服务。
6 |
7 | ### 开通即时通信 IM
8 |
9 | 创建互动白板应用成功后,将为您生成和白板应用一致的`SDKAppID`。请您登录腾讯云官网后在 [即时通信 IM 应用列表](https://console.cloud.tencent.com/avc) 中查看。
10 |
--------------------------------------------------------------------------------