Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
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
660
アプリが動いたその先へ (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
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.1k
Oxlintはいいぞ(続)
yug1224
1
450
Press start. Python's next generation.
willingc
PRO
3
130
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
550
typoなんかねぇよ
raspython3
0
550
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
210
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
390
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
490
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
390
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
380
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
570
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
650
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
The SEO Collaboration Effect
kristinabergwall1
1
530
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
How to Ace a Technical Interview
jacobian
281
24k
The Limits of Empathy - UXLibs8
cassininazir
1
610
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
400
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
550
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
500
BBQ
matthewcrist
89
10k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Designing for Performance
lara
611
70k
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