๐ŸŽ iOS

Share Extension

gom1n 2022. 10. 3. 08:54

** ๊ณต๋ถ€ ์ค‘์ด๋ผ ํ‹€๋ฆด ์ˆ˜ ์žˆ์Œ **

** ์„ค๋ช… ๋Œ€์ถฉ ์ฃผ์˜ **

 

์ง€๊ธˆ ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜ ํ™”๋ฃก์ ์ •์ด๋ผํ•  ์ˆ˜ ์žˆ๋Š” '๋งํฌ ๊ณต์œ '

๋ฐ”๋กœ๋ฐ”๋กœ Share Extension์„ ์“ฐ๋ฉด ๋œ๋‹จ๋‹ค. 

 

๊ฒฐ๊ณผํ™”๋ฉด

๋ฌด์‹ ์‚ฌ > ์–ด๋จธ ์ด ์˜ท ๋ง˜์— ๋“ ๋‹ค > ๊ณต์œ ๋ฒ„ํŠผ > ์œ„์‹œ๋ณด๋“œ ์•ฑ > ์œ„์‹œ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€

๋‹คํฌ๋ชจ๋“œ์ž„ใ…‹ ใ…ˆใ……

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‚˜์˜ ์•ฑ์— ์ด ์˜ท ์ •๋ณด๋“ค์ด ์ขŒ๋ผ๋ฝ ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์•Œ๋ฆผ๋„ ์˜ค๋Š” ๊ฒƒ์ด๋‹ค.

์„œ๋ฒ„๋ถ„ ์ •๋ง ์งฑ์ด์—์š”~ ๋ฌผ๋ก  ๋‚˜๋„ ์งฑ์ด์•ผ~


INDEX

1. Share Extension ๋„์ž…

2. Custom View

3. ์•ฑ๊ณผ ๋ฐ์ดํ„ฐ ๋ฐ ๋ฆฌ์†Œ์Šค๋“ค ๊ณต์œ 


 

1. Share Extension ๋„์ž…

1-1) File > Target > Share Extension ์ถ”๊ฐ€ > ์ด๋ฆ„์€ ์•Œ์•„์„œ ์ง€์–ด์ค€๋‹ค.

 

1-2) ์‹คํ–‰

XCode ์ƒ๋‹จ์—์„œ ๊ธฐ์กด์˜ ์•ฑ ์‹คํ–‰์ด ์•„๋‹Œ Share Extension์œผ๋กœ ์•ฑ์„ ์‹คํ–‰

 

๊ทธ๋Ÿผ ์ด๋Ÿฐ ์ฐฝ์ด ๋œฌ๋‹ค. ์–ด๋””์„œ ์‹คํ–‰ํ• ๊ฑฐ๋ƒ ~ ์ด๋ง์ด๋‹ค.

๋‚œ ์›น ์„œ์นญ ์ค‘ ์•ฑ์„ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌํŒŒ๋ฆฌ๋กœ ํด๋ฆญ

๊ทธ๋Ÿผ ์‚ฌํŒŒ๋ฆฌ๊ฐ€ ์‹œ์ž‘๋˜๊ณ , ๊ณต์œ  ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋‚˜์˜ ์•ฑ์ด ๋œจ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. Custom View

ํด๋ฆญํ•˜๋ฉด ๋””ํดํŠธ ๋ทฐ๊ฐ€ ๋œฌ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๋ทฐ๋ฅผ ์ปค์Šคํ…€ํ•ด์•ผํ•˜๋Š” ์˜๋ฌด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—...

ShareViewController๋กœ ๊ฐ€์„œ ๊ธฐ์กด์˜ ํ•จ์ˆ˜๋“ค์„ ์‹ธ๊ทธ๋ฆฌ ์ง€์›Œ์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  UIViewController๋กœ ์ •์˜ํ•ด์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚ด ๋ง˜๋Œ€๋กœ ์ปค์Šคํ…€!

 

์ฐธ๊ณ ๋กœ ๋‹ซ์„ ๋•Œ : ๊ธฐ์กด์˜ self.dismiss๋ฅผ ํ•˜๋ฉด ์ฐฝ์ด ๋‹ซํžˆ์ง€ ์•Š๋Š”๋‹ค.

self.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil)

์ด๋ ‡๊ฒŒ ํ•ด์•ผ ์•ฑ๊ณต์œ ๊ฐ€ ๋๋‚˜๋ฒ„๋ฆผ

 

3. ์•ฑ๊ณผ ๋ฐ์ดํ„ฐ ๊ณต์œ ๋ฅผ ํ•˜๊ณ  ์‹ถ์€๋ฐ...?!

์•„์˜ˆ ๋‹ค๋ฅธ ํƒ€๊ฒŸ์œผ๋กœ ์žกํ˜€์„œ ๊ณต์œ ๋„ ๋ชปํ•˜์ž–์•„~ ์„ค๋งˆ ์ƒˆ๋กœ ๋‹ค ์งœ์•ผ๋˜๋Š” ๊ฑด๊ฐ€~ ํ•˜๊ณ  ์•„๋งˆ์ถ”์–ด๋Š” ์šธ๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

์นจ์ฐฉํ•˜๊ฒŒ App Groups ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋ผ...

์•ฑ > Signing & Capabilities > App Groups ์ถ”๊ฐ€

์ฃผ์˜ํ•  ์ ์€ ! ์•ฑ๊ณผ Share ํƒ€๊ฒŸ์— ๋˜‘๊ฐ™์€ ์ฃผ์†Œ๊ฐ’์„ ์จ์ค˜์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์™ธ๋ถ€ ์•ฑ์—์„œ๋„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ...

 

๊ทธ๋ฆฌ๊ณ . ๊ธฐ์กด์˜ ์•ฑ์œผ๋กœ ๊ฐ€์„œ UserDefault์— ์ •๋ณด๋ฅผ ๊ผฌ์˜ฅ ๋„ฃ์–ด์ฃผ๋ฉด ๋˜ ...

๋‚˜๋Š” httpํ†ต์‹ ๋„ ํ•ด์•ผ๋ผ์„œ ํ† ํฐ๋„ ๋„ฃ์–ด์คฌ์–ด...

let defaults = UserDefaults(suiteName: "group.gomin.Wishboard.Share")
defaults?.set(token, forKey: "token")
defaults?.synchronize()

 

๊ทธ๋Ÿผ Share์ชฝ์œผ๋กœ ๊ฐ€์„œ ์ด๋ ‡๊ฒŒ ํ˜ธ์ถœํ•ด์ฃผ๋ฉด ... ๋˜....

let defaults = UserDefaults(suiteName: "group.gomin.Wishboard.Share")
let BaseURL = defaults?.string(forKey: "url") ?? ""
let token = defaults?.string(forKey: "token") ?? ""

 

๋งŒ์•ฝ ๊ธฐ์กด ์•ฑ์—์„œ ์“ฐ๋˜ ์ด๋ฏธ์ง€๋“ค์ด๋ž‘ ํฐํŠธ, ๋ฆฌ์†Œ์Šค ํŒŒ์ผ๋“ค์„ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด ...

์ด๋ ‡๊ฒŒ ์ฒดํฌ ํ‘œ์‹œ ... ๊ผฌ์˜ฅ ํ•ด์ฃผ๋ฉด ๋˜ .... !!!!

 

 

๋. ๋˜๊ฒŒ ์‚ฝ์งˆ ๋งŽ์ด ํ–ˆ๋Š”๋ฐ ์“ฐ๊ณ ๋ณด๋‹ˆ ๋ณ„ ๊ฑฐ ์—†๋‹ค.

์ด๋ ‡๊ฒŒ ์ƒˆ๋กœ์šด ๊ฑฐ ๋ฐฐ์›Œ๊ฐ„๋‹ค ~