Slide 1

Slide 1 text

.BTUFSJOH TIBSFTIFFUQSFWJFX QPUBUPUJQT F[VSB

Slide 2

Slide 2 text

F[VSB w 1PEDBTU"VEJPCPPL IUUQTNPPLNPPLSBEJPDPN w -*/&DPSQ w -*/&ϊϕϧ։ൃ୲౰

Slide 3

Slide 3 text

/FX J04d dJ04

Slide 4

Slide 4 text

2͜ͷ1SFWJFX෦෼ɺԿ͔ରԠ͕ඞཁʁ

Slide 5

Slide 5 text

2͜ͷ1SFWJFX෦෼ɺԿ͔ରԠ͕ඞཁʁ 4%,ଆͰద੾ʹදࣔͯ͘͠ΕΔ৔߹΋͋Δ

Slide 6

Slide 6 text

2͜ͷ1SFWJFX෦෼ɺԿ͔ରԠ͕ඞཁʁ ΞϓϦ։ൃऀଆͰมߋ͕ඞཁͳ৔߹΋͋Δ

Slide 7

Slide 7 text

ରԠલ γΣΞ͢Δίϯςϯπ w 63-ίϯςϯπ΁ͷ63- w ςΩετϋογϡλά౳

Slide 8

Slide 8 text

ରԠલ ରԠޙ63-ͷQSFWJFXΛදࣔ

Slide 9

Slide 9 text

ରԠޙ63-ͷQSFWJFXΛදࣔ ରԠલ

Slide 10

Slide 10 text

UIActivityViewController

Slide 11

Slide 11 text

let activityVC = UIActivityViewController( activityItems: [shareItem], applicationActivities: nil) self.present(activityVC, animated: true, completion: nil)

Slide 12

Slide 12 text

activityItems: [URL(Web)] activityItems: [URL(file path)] activityItems: [Text] ࣗಈతʹద੾ͳදࣔΛͯ͘͠ΕΔ৔߹ ྫ

Slide 13

Slide 13 text

activityItems: [URL, Text] activityItems: [UIImage] activityItems: [NSData] activityItems: [Text, UIImage] վળͷ༨஍͕͋Δ৔߹ ྫ ΞϓϦΞΠίϯ

Slide 14

Slide 14 text

ଞʹ΋͍Ζ͍Ζͳύλʔϯ͕͋Δ͚ΕͲʜ

Slide 15

Slide 15 text

͜ΕΛԡ͓͚͑ͯ͞͹େৎ෉ʂ

Slide 16

Slide 16 text

ϙΠϯτ 1SFWJFX͞ΕΔίϯςϯπͷ༏ઌ౓

Slide 17

Slide 17 text

let activityVC = UIActivityViewController( activityItems: [...], applicationActivities: nil) self.present(activityVC, animated: true, completion: nil)

Slide 18

Slide 18 text

6*"DUJWJUZ*UFN4PVSDF4USJOH63-%BUB 6**NBHF౳ ϙΠϯτ 1SFWJFX͞ΕΔίϯςϯπͷ༏ઌ౓ ஫ ͜Ε͸%PDVNFOUʹ໌จԽ͞Ε͓ͯΒͣɺ ࢲݸਓͰͷ࣮ݧΛجʹͨ͠ௐࠪ݁ՌͰ͢ɻ ެࣜ৘ใͰ͸ͳ͍͜ͱΛ͝ཹҙ͍ͩ͘͞ɻ

Slide 19

Slide 19 text

activityItems: [URL, String] 6*"DUJWJUZ*UFN4PVSDF4USJOH63-*NBHF ϙΠϯτ 1SFWJFX͞ΕΔίϯςϯπͷ༏ઌ౓

Slide 20

Slide 20 text

activityItems: [ItemSource(URL), String] ϙΠϯτ 1SFWJFX͞ΕΔίϯςϯπͷ༏ઌ౓ 6*"DUJWJUZ*UFN4PVSDF4USJOH63-*NBHF

Slide 21

Slide 21 text

ϙΠϯτ -1-JOL.FUBEBUB

Slide 22

Slide 22 text

-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?

Slide 23

Slide 23 text

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 } }

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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 }

Slide 26

Slide 26 text

88%$ ʮ&NCFEEJOHBOE4IBSJOH7JTVBMMZ3JDI-JOLTʯ IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED -1-JOL.FUBEBUBपΓͷৄࡉ

Slide 27

Slide 27 text

-1-JOL.FUBEBUBΛ࢖͏ํ๏ͷ·ͱΊ w ํ๏ w -1-JOL.FUBEBUBʹλΠτϧ΍ΞΠίϯ౳ͷ৘ใΛೖΕΔ w ্هΛ6*"DUJWJUZ*UFN4PVSDFͷϝιουܦ༝Ͱ౉͢ w PQUJPOBM౉ͨ͠-1-JOL.FUBEBUBͷQSPQFSUZΛߋ৽͢Δ w ஫ҙ఺ 4IBSFઌʹ΋-1-JOL.FUBEBUB͸౉͞ΕΔ 4IBSFઌͰ࢖ΘΕΔՄೳੑ͕͋Δ

Slide 28

Slide 28 text

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͸౉͞ΕΔ

Slide 29

Slide 29 text

ࢀߟจݙ w -1-JOL.FUBEBUB IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOMJOLQSFTFOUBUJPO MQMJOLNFUBEBUB w &NCFEEJOHBOE4IBSJOH7JTVBMMZ3JDI-JOLT IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED w -JOL1SFTFOUBUJPO IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOMJOLQSFTFOUBUJPO