๐Ÿ’ก work work work/ios app development

demo ๊ฐœ๋ฐœ - 6 : ๋””๋ฐ”์ด์Šค ํ•„ํ„ฐ๋ง, model ์ƒ์„ฑ, UI์ƒ์„ฑ

hanwitjus 2022. 2. 24. 16:41

์˜ค๋Š˜์€ ์ข€ ๋งŽ์ด์ˆ˜์ •ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

 

์ผ๋‹จ ์ด ์ „์— ํ•˜๋ ค๊ณ  ํ–ˆ๋˜๊ฒŒ

์ด๋ฆ„์ด nil์ธ ๊ธฐ๊ธฐ๋“ค์ด ๋‹ค ๋ณด์—ฌ์ง€๊ณ  ์ด๋ฏธ ํ…Œ์ด๋ธ” ๋ทฐ์— ์žˆ๋Š” ๊ธฐ๊ธฐ๋“ค๋„ ์ค‘๋ณต๋ผ์„œ ๊ณ„์† ๋ณด์—ฌ์ค˜์„œ

์ค‘๋ณต๊ฒ€์‚ฌ / nil ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊นจ๋—ํ•˜๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ฑฐ์˜€๋Š”๋ฐ ์ด๊ฑธ ๊ณ ์ณค๋‹ค!

 

func serialDidDiscoverPeripheral(peripheral: CBPeripheral, RSSI: NSNumber?) {
        
        print("=== ScanViewController: ํ”„๋กœํ† ์ฝœ ํ•จ์ˆ˜ ํ˜ธ์ถœ ===")
        
        for item in peripheralList {
            if item.peripheral.identifier == peripheral.identifier {
                print(">> ์ค‘๋ณต ๊ฒ€์‚ฌ <<")
                print(">> ์ค‘๋ณต๋œ ๋””๋ฐ”์ด์Šค ์ด๋ฆ„: " + (item.peripheral.name ?? "") + " <<")
                return
            }
        }
        
        if peripheral.name == nil || peripheral.name == "" {
            print(">> ์ด๋ฆ„์ด ์—†๋Š” ๋””๋ฐ”์ด์Šค ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ <<")
            print("*** ์ด๋ฆ„ ์—†๋Š” ๋””๋ฐ”์ด์Šค ์ •๋ณด: " + peripheral.description + " ***")
            return
        }

 

๊ธฐ๊ธฐ ๊ฒ€์ƒ‰ ๋•Œ ๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋Š” 

serialDidDiscoverPeripheral ํ•จ์ˆ˜ ์•ˆ์—๋‹ค๊ฐ€ ์ค‘๋ณต๋˜๋Š” ๋””๋ฐ”์ด์Šค๋ฅผ ๊ฑฐ๋ฆฌ๊ณ 

์ด๋ฆ„์ด ์—†๋Š”๊ฑธ ๊ฑธ๋Ÿฌ๋ƒˆ๋‹ค.

 

์›๋ž˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฒ„์ „ ์•ฑ์„ ๋ณด๋‹ˆ๊นŒ ์œ„ํ˜‘ํƒ์ง€ ํ•  ๋•Œ 1์ฐจ์ ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ๋“ค์ด

์ด๋ฆ„์ด ์—†๋Š” Device ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ, ์ค‘๋ณต MAC ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ ์˜€๋‹ค.

 

์ผ๋‹จ ์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ๊นŒ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ๋‚˜์™”๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฒ„์ „์„ ๋ณด๋‹ˆ Device Model์„ ํด๋ž˜์Šค๋กœ ์„ ์–ธํ•ด๋†“๊ณ  ๊ทธ ์•ˆ์—

ssid, bssid, uuid, vendor, type, hashcode, rist, rssi ๋“ฑ๋“ฑ์„ ๋ณ€์ˆ˜๋กœ ๊ฐ–๊ฒŒ ํ–ˆ๋‹ค.

 

์ง€๊ธˆ์€ ๊ทธ๋ƒฅ ๊ฒ€์ƒ‰๋  ๋•Œ ๋งˆ๋‹ค ๊ฒจ์šฐ ์ด๋ฆ„๋งŒ ๋ณด์—ฌ์ฃผ๋Š” ์ •๋„๋ผ ๋ชจ๋ธ์ด ํ•„์š”๊ฐ€ ์—†์—ˆ๋Š”๋ฐ

๋‚˜์ค‘์— ์œ„ํ˜‘๋„๊นŒ์ง€ ํŒ๋‹จํ•ด์„œ ๋ณด์—ฌ์ฃผ๊ณ  ํ•˜๋ ค๋ฉด ์ €์žฅํ•˜๋Š”๊ฒŒ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์•„์„œ

๋ชจ๋ธ์„ ๊ตฌ์กฐ์ฒด๋กœ ๋งŒ๋“ค์—ˆ๋‹ค.

 

import Foundation
import CoreBluetooth

struct DeviceModel {
    var ssid: String = ""
    var bssid: String?
    var vendor: String = ""
    var uuid: CBUUID
    var hashCode: Int = 0
    var type: Int = 0
    var major: Int = 0
    var rssi: NSNumber = 0.0
    var risk: Int = 0
    var icon: String = ""
}

 

์ผ๋‹จ์€ ๋˜‘๊ฐ™์ด ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์•„์ง ์„ ์–ธ๋งŒ ํ•˜๊ณ  ์‚ฌ์šฉ์€ ์•ˆํ–ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ์—์„œ asset๋“ค์„ ๊ฐ€์ ธ์™€์„œ ๋ฐฐ๊ฒฝ์„ ๋ฐ”๊พธ๊ณ  ์•„์ด์ฝ˜๋„ ์‚ฌ์šฉํ–ˆ๋‹ค.

์ด๋ฏธ์ง€๋กœ ๋ฐฐ๊ฒฝ์„ ๋ฐ”๊พธ๋Š”๊ฑฐ๋ผ

 scanListTableView.backgroundColor = UIColor(patternImage: (UIImage(named: "dpbgblue_00")!))
        
 self.view.backgroundColor = UIColor(patternImage: (UIImage(named: "dpbgblue_00")!))

์ด ๋‘๊ฐ€์ง€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ”๊ฟจ๊ณ 

 

๋ทฐ ์…€์€ ํˆฌ๋ช…์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•ด์„œ

 self.backgroundColor = UIColor.clear

์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.

 

 

๊ทธ๋ž˜์„œ ํ˜„์žฌ๊นŒ์ง€ ์™„์„ฑ๋œ ๋ชจ์Šต์€

 

Launch, Main, Scan List ํ™”๋ฉด

 

์ด๋ ‡๊ฒŒ๊ณ 

 

์ถ”ํ›„์— ๋ชจ๋ธ ์ž๋ฃŒํ˜•๋„ ๋ฐ”๊ฟ”์•ผํ•  ๊ฒƒ ๊ฐ™๊ณ  ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ์ˆ˜์ •์‚ฌํ•ญ์ด ์ƒ๊ธฐ๊ธด ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

์ผ๋‹จ ์˜ค๋Š˜์€ ์—ฌ๊ธฐ์„œ ๋..

 

 

 


Reference

https://developer.apple.com/documentation/corebluetooth/cbperipheraldelegate/1518744-peripheral

 

Apple Developer Documentation

 

developer.apple.com

 

 

LIST