IOS技術分享| 你畫我猜小遊戲快速實現
1:實現多端實時互動白板,這裡使用anyRTC 互動白板SDK
2:你畫我猜題目服務,本demo演示如何一個人畫,多人看猜,本demo省略該服務
3:答案提示/公佈,該功能需要IM支援,這裡使用anyRTC 實時訊息 SDK 來實現
4:多人語音交流,該功能需要音影片方案,這裡使用anyRTC 音影片SDK來實現
Demo 整體效果
跑通Demo
-
-
配置開發者資訊:找到 AppID.swift 檔案並配置 AppID
-
找到專案根目錄執行:pod install,載入demo依賴庫
-
連線真機跑通demo
專案原始碼分析
|-- GuessDraw |-- Podfile //Pod配置項 |-- ARDrawDemo | |-- ARBoard.framework //白板SDK | |-- Base | | |-- ARKeyboardInputViewController.swift // 聊天輸入框 | | |-- AppDelegate.swift // 程式入口 | | |-- SceneDelegate.swift | | |-- ViewController.swift // 主頁面 | |-- Board | | |-- ARBoardViewController.swift // 你猜我畫控制器 | | |-- ARChatViewController.swift // 聊天訊息控制器 | | |-- View | | |-- ARSelectedView.swift // 選擇器頁面 | |-- Common | |-- ARExtension.swift // 擴充 | |-- AppID.swift // 開發者資訊配置 |-- Pods
實現細節
-
初始化白板
let authParam = ARBoardAuthParam ()
// 開發者資訊配置
authParam .appId = AppID
// 標識使用者ID
authParam .uid = getUid ()
let baseParam = ARBoardBaseParam ()
// 預設不可編輯
baseParam .authConfig.drawEnable = false
// 白板的寬高比例為1:1
baseParam .config.ratio = "1:1"
// 白板畫筆顏色為紅色
baseParam .styleConfig.brushColor = UIColor .red
// 白板畫筆粗細為2
baseParam .styleConfig.brushThin = 2
// 初始化白板
boradKit = ARBoardKit ( authParam : authParam , roomId : self .roomId , boardParam : baseParam , delegate : self )
// 畫板View
boardView = boradKit .getBoardRenderView ()
-
初始化 IM 聊天
// 初始化RTM
rtmKit = ARtmKit ( appId : AppID , delegate : self ) !
// 登入RTM
rtmKit .login ( byToken : nil , user : getUid ()) { [ weak self ]
errorCode in
guard let weakself = self else { return }
// 建立訊息頻道
weakself .rtmChannel = weakself .rtmKit.createChannel ( withId : weakself .roomId , delegate : self )
// 加入頻道
weakself .rtmChannel ? .join ( completion : { code in
// 加入頻道成功
if code == .channelErrorOk {
weakself .joinChannel = true
// 獲取頻道屬性
weakself .getChannelAttributes ()
}
})
}
-
初始化語音聊天
// 初始化
rtcKit = ARtcEngineKit .sharedEngine ( withAppId : AppID , delegate : self )
// 設定頻道屬性為直播模式
rtcKit .setChannelProfile ( .liveBroadcasting )
// 設定角色為主播,加入頻道後自動上麥
rtcKit .setClientRole ( .broadcaster )
// 設定音訊屬性,使用媒體模式
rtcKit .setAudioProfile ( .musicStandard , scenario : .gameStreaming )
// 加入頻道
rtcKit .joinChannel ( byToken : nil , channelId : self .roomId , uid : getUid ()) { channel , uid , elapsed in
// 加入成功
}
-
是否有繪畫許可權
使用 RTM 頻道屬性來確定繪畫
獲取許可權
let options = ARtmChannelAttributeOptions ()
// 頻道屬性更改是否要通知頻道內的使用者
options .enableNotificationToChannelMembers = true
// 頻道屬性
let attribute : ARtmChannelAttribute = ARtmChannelAttribute ()
attribute .key = ARKeyChannel
attribute .value = randomString ( length : 9 )
// 新增或者更新頻道
rtmKit .addOrUpdateChannel ( self .roomId , attributes : [ attribute ], options : options ) { errorCode in
if errorCode == .attributeOperationErrorOk {
}
}
釋放許可權
let option : ARtmChannelAttributeOptions = ARtmChannelAttributeOptions ()
option .enableNotificationToChannelMembers = true
rtmKit .deleteChannel ( self .roomId , attributesByKeys : [ ARKeyChannel ], options : option ) { erroCode in
}
監聽頻道屬性變化
監聽頻道屬性變化,進行頁面佈局更改
// 頻道屬性更新回撥
func channel ( _ channel : ARtmChannel , attributeUpdate attributes : [ ARtmChannelAttribute ]) {
// 狀態更改
changeStateWithAtt ( attributes : attributes )
}
總結
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013909/viewspace-2856930/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android技術分享| 【你畫我猜】Android 快速實現Android
- Cocos Creator 實現畫板(你畫我猜)
- MATLAB 簡易版 你畫我猜小遊戲Matlab遊戲
- Vue+WebSocket+ES6+Canvas 製作【你畫我猜】小遊戲VueWebCanvas遊戲
- 原生JS實現你畫我猜的一點點功能JS
- canvas+websocket+vue做一個完整的你畫我猜小遊戲CanvasWebVue遊戲
- Cocos 技術派:實時競技小遊戲技術實現分享遊戲
- 用 Java 做個“你畫手機猜”的小遊戲Java遊戲
- IOS技術分享| iOS快速生成開發文件(二)iOS
- IOS技術分享| iOS快速生成開發文件(一)iOS
- linux實現猜數字小遊戲Linux遊戲
- 社交畫圖遊戲《你畫我猜》下載量突破5000萬遊戲
- 開源demo| 你畫我猜——讓你的生活更有趣
- web技術分享| 快速實現一個呼叫邀請 SDKWeb
- 【技術學院】iOS APNs實戰分享iOS
- Android:單機版的“你畫我猜”你敢信?(Path的使用)Android
- IOS技術分享| 快對講2.0會議場景實現iOS
- Canvas+Socket搞出一個多人遊玩的“我畫你猜”Canvas
- 【Java基礎教程】用Java實現猜數字小遊戲Java遊戲
- 快速理解容器技術的實現原理
- web技術分享| 虛擬列表實現Web
- Flutter與原生互動(安卓、iOS),實現原生分享 | 掘金技術徵文Flutter安卓iOS
- 猜數字小遊戲遊戲
- iOS - 圖文混排技術方案分享iOS
- C語言實現的一個簡單的猜數小遊戲C語言遊戲
- Google首款小程式「猜畫小歌」用了哪些AI相關技術?GoAI
- iOS研發助手DoraemonKit技術實現(二)iOS
- iOS研發助手DoraemonKit技術實現(一)iOS
- 走在技術前沿的 iOS 架構實現 ?iOS架構
- 如何快速提升你的技術能力
- 做SEO技術如何快速實現月賺十萬?
- 谷歌AI版“你畫我猜”刷屏朋友圈 背後是這樣的原理!谷歌AI
- 各公司使用者畫像技術案例分享
- iOS 實現快速切換主題詳細教程(附上原始碼)| 掘金技術徵文iOS原始碼
- “我是技術總監,你幹嘛總問我技術細節?”
- iOS 深入理解KVO實現 | 掘金技術徵文iOS
- ios開發實現畫板功能iOS
- web前端技術分享:使用react實現簡易路由Web前端React路由