Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Mastering share sheet preview
Search
Yuka Ezura
November 11, 2019
Programming
1.5k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Mastering share sheet preview
Yuka Ezura
November 11, 2019
More Decks by Yuka Ezura
See All by Yuka Ezura
SF Symbols
ezura
9
1.5k
気遣いの iOS プログラミング
ezura
11
3.8k
Secret Swift tour
ezura
7
3.1k
Swift Album ver.4.1
ezura
3
1.6k
Swift と Kotlin
ezura
4
3k
哲学とSwiftの発表
ezura
5
670
アプリが動いたその先へ (iOS アプリ開発編)
ezura
1
1.2k
Blending Kotlin's culture into Swift
ezura
1
1.4k
Re: エラーと警告でコードをデザインする
ezura
2
1.1k
Other Decks in Programming
See All in Programming
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
600
カツオ、ご期待ください
suneo3476
0
140
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
530
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
410
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
690
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
530
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
440
Verilogで学ぶCPU自作入門.pdf
uyuki234
8
3.9k
The Rails Doctrine Decade
koic
2
470
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
250
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
220
Featured
See All Featured
Accessibility Awareness
sabderemane
1
230
Design in an AI World
tapps
1
340
Designing for humans not robots
tammielis
254
26k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Designing Powerful Visuals for Engaging Learning
tmiket
1
590
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
590
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Exploring anti-patterns in Rails
aemeredith
4
520
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
840
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Transcript
.BTUFSJOH TIBSFTIFFUQSFWJFX QPUBUPUJQT F[VSB
F[VSB w 1PEDBTU"VEJPCPPL IUUQTNPPLNPPLSBEJPDPN w -*/&DPSQ w -*/&ϊϕϧ։ൃ୲
/FX J04d dJ04
2͜ͷ1SFWJFX෦ɺԿ͔ରԠ͕ඞཁʁ
2͜ͷ1SFWJFX෦ɺԿ͔ରԠ͕ඞཁʁ 4%,ଆͰదʹදࣔͯ͘͠ΕΔ߹͋Δ
2͜ͷ1SFWJFX෦ɺԿ͔ରԠ͕ඞཁʁ ΞϓϦ։ൃऀଆͰมߋ͕ඞཁͳ߹͋Δ
ରԠલ γΣΞ͢Δίϯςϯπ w 63-ίϯςϯπͷ63- w ςΩετϋογϡλά
ରԠલ ରԠޙ63-ͷQSFWJFXΛදࣔ
ରԠޙ63-ͷQSFWJFXΛදࣔ ରԠલ
UIActivityViewController
let activityVC = UIActivityViewController( activityItems: [shareItem], applicationActivities: nil) self.present(activityVC, animated:
true, completion: nil)
activityItems: [URL(Web)] activityItems: [URL(file path)] activityItems: [Text] ࣗಈతʹదͳදࣔΛͯ͘͠ΕΔ߹ ྫ
activityItems: [URL, Text] activityItems: [UIImage] activityItems: [NSData] activityItems: [Text, UIImage]
վળͷ༨͕͋Δ߹ ྫ ΞϓϦΞΠίϯ
ଞʹ͍Ζ͍Ζͳύλʔϯ͕͋Δ͚ΕͲʜ
͜ΕΛԡ͓͚͑ͯ͞େৎʂ
ϙΠϯτ 1SFWJFX͞ΕΔίϯςϯπͷ༏ઌ
let activityVC = UIActivityViewController( activityItems: [...], applicationActivities: nil) self.present(activityVC, animated:
true, completion: nil)
6*"DUJWJUZ*UFN4PVSDF4USJOH63-%BUB 6**NBHF ϙΠϯτ 1SFWJFX͞ΕΔίϯςϯπͷ༏ઌ ͜Ε%PDVNFOUʹ໌จԽ͞Ε͓ͯΒͣɺ ࢲݸਓͰͷ࣮ݧΛجʹͨ͠ௐࠪ݁ՌͰ͢ɻ ެࣜใͰͳ͍͜ͱΛ͝ཹҙ͍ͩ͘͞ɻ
activityItems: [URL, String] 6*"DUJWJUZ*UFN4PVSDF4USJOH63-*NBHF ϙΠϯτ 1SFWJFX͞ΕΔίϯςϯπͷ༏ઌ
activityItems: [ItemSource(URL), String] ϙΠϯτ 1SFWJFX͞ΕΔίϯςϯπͷ༏ઌ 6*"DUJWJUZ*UFN4PVSDF4USJOH63-*NBHF
ϙΠϯτ -1-JOL.FUBEBUB
-1-JOL.FUBEBUB An object that contains metadata about a URL https://developer.apple.com/documentation/linkpresentation/lplinkmetadata
•var originalURL: URL? •var url: URL? •var title: String? •var iconProvider: NSItemProvider? •var imageProvider: NSItemProvider? •var videoProvider: NSItemProvider? •var remoteVideoURL: URL?
class ShareActivityItemSource: NSObject, UIActivityItemSource { func activityViewControllerLinkMetadata(_ activityViewController: UIActivityViewController) ->
LPLinkMetadata? { linkMetadata } func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any { placeholder } func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? { item } }
class ShareActivityItemSource: NSObject, UIActivityItemSource { func activityViewControllerLinkMetadata(_ activityViewController: UIActivityViewController) ->
LPLinkMetadata? { let linkMetadata = LPLinkMetadata() linkMetadata.title = "custom title" linkMetadata.iconProvider = NSItemProvider(contentsOf: imageURL) return linkMetadata } linkMetadata.iconProvider (or imageProvider) linkMetadata.title
class ShareActivityLazyLoadItemSource: NSObject, UIActivityItemSource { init(_ url: URL) { self.originalURL
= url self.imageURL = saveImageInTemporaryDir(#imageLiteral(resourceName: "ezura"), fileName: "shareImage")! super.init() linkMetadata.title = "placeholder title" linkMetadata.originalURL = originalURL linkMetadata.iconProvider = NSItemProvider(contentsOf: imageURL) linkMetadata.imageProvider = NSItemProvider(contentsOf: imageURL) metadataProvider.startFetchingMetadata(for: originalURL) { [linkMetadata] metadata, error in linkMetadata.title = metadata?.title linkMetadata.url = metadata?.url linkMetadata.originalURL = metadata?.originalURL linkMetadata.iconProvider = metadata?.iconProvider linkMetadata.imageProvider = metadata?.imageProvider } } func activityViewControllerLinkMetadata(_ activityViewController: UIActivityViewController) -> LPLinkMetadata? { return linkMetadata }
88%$ ʮ&NCFEEJOHBOE4IBSJOH7JTVBMMZ3JDI-JOLTʯ IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED -1-JOL.FUBEBUBपΓͷৄࡉ
-1-JOL.FUBEBUBΛ͏ํ๏ͷ·ͱΊ w ํ๏ w -1-JOL.FUBEBUBʹλΠτϧΞΠίϯͷใΛೖΕΔ w ্هΛ6*"DUJWJUZ*UFN4PVSDFͷϝιουܦ༝Ͱ͢ w PQUJPOBMͨ͠-1-JOL.FUBEBUBͷQSPQFSUZΛߋ৽͢Δ w
ҙ 4IBSFઌʹ-1-JOL.FUBEBUB͞ΕΔ 4IBSFઌͰΘΕΔՄೳੑ͕͋Δ
3FDBQ w ϙΠϯτ1SFWJFX͞ΕΔίϯςϯπͷ༏ઌ 6*"DUJWJUZ*UFN4PVSDF5FYU63-%BUB 6**NBHF 1SFWJFX͍ͨ͠ίϯςϯπΛ6*"DUJWJUZ*UFN4PVSDFܦ༝Ͱ͢ ෳͷ6*"DUJWJUZ*UFN4PVSDF͕͋Δ߹ઌউͪ
w ϙΠϯτ-1-JOL.FUBEBUB w -1-JOL.FUBEBUBʹλΠτϧΞΠίϯͷใΛೖΕΔ w ্هΛ6*"DUJWJUZ*UFN4PVSDFͷϝιουܦ༝Ͱ͢ ҙ4IBSFઌʹ-1-JOL.FUBEBUB͞ΕΔ
ࢀߟจݙ w -1-JOL.FUBEBUB IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOMJOLQSFTFOUBUJPO MQMJOLNFUBEBUB w &NCFEEJOHBOE4IBSJOH7JTVBMMZ3JDI-JOLT IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED w -JOL1SFTFOUBUJPO
IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOMJOLQSFTFOUBUJPO