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
「シェア機能」について考えてみた
Search
PKPK-Carnage
October 23, 2019
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「シェア機能」について考えてみた
PKPK-Carnage
October 23, 2019
More Decks by PKPK-Carnage
See All by PKPK-Carnage
iOSアプリを堅牢にデザインするために知っておくべきたった1つのこと
pkpkcarnage
0
520
アプリへの導線の増やし方.pdf
pkpkcarnage
0
750
リリースビルドでのみ起こる謎のバグに見舞われた話
pkpkcarnage
0
230
Any型をprotocolにキャストする時に 気をつけた方がいい話
pkpkcarnage
0
310
今日から使える! Optionalをいい感じに扱うtips
pkpkcarnage
0
1.3k
もっと早く教えて欲しかった画面遷移
pkpkcarnage
0
370
iOSの通信処理を簡潔に書く
pkpkcarnage
0
320
Other Decks in Programming
See All in Programming
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
800
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
550
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
19k
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
120
in-process GraphQL のすすめ #ginzajs
izumin5210
3
1.1k
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
220
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
620
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
510
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
240
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.9k
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
120
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
520
Featured
See All Featured
Fireside Chat
paigeccino
42
4k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
210
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
210
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
56k
For a Future-Friendly Web
brad_frost
183
10k
We Have a Design System, Now What?
morganepeng
55
8.3k
The SEO Collaboration Effect
kristinabergwall1
1
520
Raft: Consensus for Rubyists
vanstee
141
7.6k
Building Adaptive Systems
keathley
44
3.2k
Done Done
chrislema
186
16k
Design in an AI World
tapps
1
280
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Transcript
ʮγΣΞػೳʯʹ͍ͭͯߟ͑ͯΈͨ 1 2019/9/17 ͋Δ͋ΔLTʙiOSΞϓϦ։ൃΤϯδχΞʙ Vol.7 Tomosuke Okada
About me • Tomosuke Okada • iOSྺ3 • ອըͷΞϓϦΛ࡞ͬͯ·͢ •
SNS • Qiita → @fr0g_fr0g • Github → Frog-Frog • Twitter → @fr0g_fr0g • μϒϧϑϩοά
iOSͰγΣΞػೳͱݴ͑ʁ 3
UIActivityViewController 4
• ࣮͕؆୯ • Πϯετʔϧ͞Ε͍ͯΔΞϓϦ ͕ࣗಈతʹදࣔ͞ΕΔ • ग़͢ΞϓϦΛϢʔβʔ͕Χελ ϚΠζͰ͖Δ UIActivityViewControllerͱɾɾɾ 5
UIActivityViewController͍͢͝ 6
͓͠·͍ 7
͍ɺͪΐͬͱͯ 8
ͦΜͳΛ͠ʹ͖ͨΜ͡Όͳ͍ 9
10 Netflix Spotify
γΣΞࣗ࡞Ͱ࣮ͯ͠Δ 11
12 Netflix Spotify
13 Netflix Spotify
InstagramετʔϦʔζͱɾɾɾʁ • Instagram্ͷߘํ๏ͷҰछ • 24࣌ؒͰߘ͕ফ͑Δ • ߘը໘Ͱଟ࠼ͳฤूΛߦ͑Δ • ςΩετ •
ελϯϓ • ͦͷଞ৭ʑʢΞϯέʔτɺΫΠζɺ࣭ͳͲʣ 14
UIActivityViewController͔ΒγΣΞͰ͖ͳ͍ 15
ͭ·Γɾɾɾʁ • InstagramετʔϦʔζ͔ͳΓࣗ༝͕ߴ͍γΣΞΛߦ͏͜ͱ͕Ͱ͖Δ • NetflixSpotifyͷΑ͏ͳίϯςϯπϏδωεΛߦ͏ୈҰઢͷαʔϏεͰ ɺͦΕΛߦ͏ͨΊʹOSඪ४ͷUIActivityViewControllerΛ͋͑ͯΘͣ ʹࣗ࡞͍ͯ͠Δ • γΣΞ͢ΔࡍͷϢʔβʔମݧΛ্ͤ͞Δ͜ͱ͕ॏཁͩͱߟ͑ΒΕ͍ͯ Δ
16
17
࣮ͯ͠Έͨ 18 final class StoriesSharer { private let urlScheme =
URL(string: "instagram-stories://share")! func share() { guard UIApplication.shared.canOpenURL(self.urlScheme) else { return } let item: [String: Any] = [ "com.instagram.sharedSticker.backgroundImage": UIImage(named: "StoryBackgroundImage")!.pngData()!, "com.instagram.sharedSticker.stickerImage": UIImage(named: "StoryStickerImage")!.pngData()! ] let options = [UIPasteboard.OptionsKey.expirationDate: Date().addingTimeInterval(60 * 5)] UIPasteboard.general.setItems([item], options: options) UIApplication.shared.open(self.urlScheme, options: [:], completionHandler: nil) } }
ΊͪΌͪ͘Ό؆୯ 19
(PPE #BE 20 • ࣗ࡞ͰಋઢΛ࡞Δඞཁ͕͋Δ • എܠɺεςοΧʔͷ४උ͕͍Δ • ετʔϦʔζ͔ΒΞϓϦʹඈ ͢ʹInstagramଆʹਃ͕ඞཁ
• ࣮͕͔ͳΓ؆୯ • ࠓ࣌ͷएऀʹਓؾ • ଞΞϓϦͷγΣΞΑΓࣗ༝͕ߴ͍ • ΞϓϦެࣜΠϯελάϥϜΞΧϯ τͱ͔Γ্͛ΕΔ
·ͱΊ • NetflixSpotifyͷΑ͏ͳίϯςϯπϏδωεͷୈҰઢͷαʔϏεγΣΞͷ ϢʔβʔମݧΛ্ͤ͞ΔͨΊʹInstagramετʔϦʔζΛ׆༻͍ͯ͠Δ • ͦΕΒͷαʔϏε͕ͦͷͨΊʹࣗ࡞ͰγΣΞը໘Λ࣮͢Δ΄Ͳॏཁࢹ͞Ε ͍ͯΔ • ࣮͢Δ͜ͱࣗମͱͯ؆୯ͳͷͰΔՁ͕͋Δ •
γΣΞը໘Λࣗ࡞͢Δ͜ͱ͕ελϯμʔυʹͳΔະདྷ͕དྷΔ͔͠Εͳ͍ 21
͓͠·͍ 22