Slide 1

Slide 1 text

$PNNVOJDBUJPO/PUJGJDBUJPO పఈղઆʂ ·ͭ͡ -*/&

Slide 2

Slide 2 text

໊લ ·ͭ͡ দຊ३೭հ ࣗݾ঺հ ୲౰ -*/&J04 νʔϜ J04"OESPJEΤΫεϖϦΤϯενʔϜ झຯ ݸਓΞϓϦ։ൃɺғޟ

Slide 3

Slide 3 text

IUUQTFOHJOFFSJOHMJOFDPSQDPNKBCMPHHFUUJOHUIFMBUFTUJPTGFBUVSFTJOUPMJOF

Slide 4

Slide 4 text

8IBUJT$PNNVOJDBUJPO/PUJGJDBUJPO

Slide 5

Slide 5 text

J04Ͱಋೖ͞Εͨίϛϡχέʔγϣϯ༻ͷ௨஌

Slide 6

Slide 6 text

$PNNVOJDBUJPO/PUJGJDBUJPOͷಛ௃ ௨஌ʹ૬खͷը૾΍αϒλΠτϧ άϧʔϓ໊ ͕දࣔͰ͖Δ 

Slide 7

Slide 7 text

$PNNVOJDBUJPO/PUJGJDBUJPOͷಛ௃ ʮ௨஌ͷཁ໿ʯΛಥഁͰ͖Δ Ϣʔβʔ ௨ৗͷ௨஌ ௨஌ͷཁ໿ ࣌ࠩ 

Slide 8

Slide 8 text

$PNNVOJDBUJPO/PUJGJDBUJPOͷಛ௃ Ϣʔβʔ ௨ৗͷ௨஌ ௨஌ͷཁ໿ ࣌ࠩ $PNNVOJDBUJPO/PUJGJDBUJPO ͙͢ʹ௨஌ ʮ௨஌ͷཁ໿ʯΛಥഁͰ͖Δ 

Slide 9

Slide 9 text

$PNNVOJDBUJPO/PUJGJDBUJPOͷಛ௃ Ϣʔβʔ͕બΜͩ༑ୡ͔Βͷ௨஌ͷΈʮूதϞʔυʯΛಥഁͰ͖Δ Ϣʔβʔ ௨ৗͷ௨஌ ௨஌ͷཁ໿ ࣌ࠩ $PNNVOJDBUJPO/PUJGJDBUJPO "͞Μ͔Βͷ௨஌ͷΈڐՄ͢ΔूதϞʔυ 

Slide 10

Slide 10 text

$PNNVOJDBUJPO/PUJGJDBUJPOͷಛ௃ Ϣʔβʔ͕બΜͩ༑ୡ͔Βͷ௨஌ͷΈʮूதϞʔυʯΛಥഁͰ͖Δ Ϣʔβʔ ௨ৗͷ௨஌ ௨஌ͷཁ໿ ࣌ࠩ $PNNVOJDBUJPO/PUJGJDBUJPO ͙͢ʹ௨஌ "͞Μ͔Βͷ௨஌ͷΈڐՄ͢ΔूதϞʔυ "͞Μ 

Slide 11

Slide 11 text

$PNNVOJDBUJPO/PUJGJDBUJPOͷಛ௃ Ϣʔβʔ ௨ৗͷ௨஌ ௨஌ͷཁ໿ ࣌ࠩ $PNNVOJDBUJPO/PUJGJDBUJPO ͙͢ʹ௨஌ "͞Μ͔Βͷ௨஌ͷΈڐՄ͢ΔूதϞʔυ "͞Μ #͞Μ ूதϞʔυղআ࣌ʹදࣔ Ϣʔβʔ͕બΜͩ༑ୡ͔Βͷ௨஌ͷΈʮूதϞʔυʯΛಥഁͰ͖Δ 

Slide 12

Slide 12 text

*NQMFNFOUBUJPO

Slide 13

Slide 13 text

࣮૷खॱ  ૹ৴ऀΛද͢*/1FSTPOΛ༻ҙ  ϝοηʔδͷड৴Λද͢*/4FOE.FTTBHF*OUFOUΛ༻ҙ  */4FOE.FTTBHF*OUFOUΛEPOBUF  */4FOE.FTTBHF*OUFOUΛ࢖ͬͯ௨஌Λߋ৽

Slide 14

Slide 14 text

࣮૷खॱ  ૹ৴ऀΛද͢*/1FSTPOΛ༻ҙ  ϝοηʔδͷड৴Λද͢*/4FOE.FTTBHF*OUFOUΛ༻ҙ  */4FOE.FTTBHF*OUFOUΛEPOBUF  */4FOE.FTTBHF*OUFOUΛ࢖ͬͯ௨஌Λߋ৽

Slide 15

Slide 15 text

*/1FSTPOͷ४උ let sender = INPerson( personHandle: .init(value: "[email protected]", type: .emailAddress), nameComponents: nil, displayName: "まつじ", image: image, contactIdentifier: nil, customIdentifier: "xxxxxxxx", isContactSuggestion: false, suggestionType: .socialProfile )

Slide 16

Slide 16 text

*/1FSTPOͷ४උ let sender = INPerson( personHandle: .init(value: "[email protected]", type: .emailAddress), nameComponents: nil, displayName: "まつじ", image: image, contactIdentifier: nil, customIdentifier: "xxxxxxxx", isContactSuggestion: false, suggestionType: .socialProfile ) 4JSJ͕ೝࣝͰ͖Δࣝผࢠ Ϣʔβʔ͔Βݟ͑ΔͷͰ஫ҙ • ి࿩൪߸ • ϝʔϧΞυϨε • ͦͷଞ

Slide 17

Slide 17 text

*/1FSTPOͷ४උ let sender = INPerson( personHandle: .init(value: "[email protected]", type: .emailAddress), nameComponents: nil, displayName: "まつじ", image: image, contactIdentifier: nil, customIdentifier: "xxxxxxxx", isContactSuggestion: false, suggestionType: .socialProfile ) ௨஌ͷλΠτϧʹදࣔ͞ΕΔૹ৴ऀ໊

Slide 18

Slide 18 text

*/1FSTPOͷ४උ let sender = INPerson( personHandle: .init(value: "[email protected]", type: .emailAddress), nameComponents: nil, displayName: "まつじ", image: image, contactIdentifier: nil, customIdentifier: "xxxxxxxx", isContactSuggestion: false, suggestionType: .socialProfile ) ૹ৴ऀͷΞΠίϯ

Slide 19

Slide 19 text

*/1FSTPOͷ४උ let sender = INPerson( personHandle: .init(value: "[email protected]", type: .emailAddress), nameComponents: nil, displayName: "まつじ", image: image, contactIdentifier: nil, customIdentifier: "xxxxxxxx", isContactSuggestion: false, suggestionType: .socialProfile ) ΞϓϦଆͰॲཧͰ͖Δࣝผࢠ

Slide 20

Slide 20 text

࣮૷खॱ  ૹ৴ऀΛද͢*/1FSTPOΛ༻ҙ  ϝοηʔδͷड৴Λද͢*/4FOE.FTTBHF*OUFOUΛ༻ҙ  */4FOE.FTTBHF*OUFOUΛEPOBUF  */4FOE.FTTBHF*OUFOUΛ࢖ͬͯ௨஌Λߋ৽

Slide 21

Slide 21 text

*/4FOE.FTTBHF*OUFOUͷ४උ let intent = INSendMessageIntent( recipients: nil, outgoingMessageType: .outgoingMessageText, content: "通知の内容", speakableGroupName: nil, conversationIdentifier: "xxxxx", serviceName: nil, sender: sender, attachments: nil )

Slide 22

Slide 22 text

*/4FOE.FTTBHF*OUFOUͷ४උ let intent = INSendMessageIntent( recipients: nil, outgoingMessageType: .outgoingMessageText, content: "通知の内容", speakableGroupName: nil, conversationIdentifier: "xxxxx", serviceName: nil, sender: sender, attachments: nil ) ͖ͬ͞༻ҙͨ͠*/1FSTPO

Slide 23

Slide 23 text

*/4FOE.FTTBHF*OUFOUͷ४උ let intent = INSendMessageIntent( recipients: nil, outgoingMessageType: .outgoingMessageText, content: "通知の内容", speakableGroupName: nil, conversationIdentifier: "xxxxx", serviceName: nil, sender: sender, attachments: nil ) ௨஌ͷຊจʹදࣔ͞ΕΔ಺༰

Slide 24

Slide 24 text

࣮૷खॱ  ૹ৴ऀΛද͢*/1FSTPOΛ༻ҙ  ϝοηʔδͷड৴Λද͢*/4FOE.FTTBHF*OUFOUΛ༻ҙ  */4FOE.FTTBHF*OUFOUΛEPOBUF  */4FOE.FTTBHF*OUFOUΛ࢖ͬͯ௨஌Λߋ৽

Slide 25

Slide 25 text

*/4FOE.FTTBHF*OUFOUΛEPOBUF͢Δ let interaction = INInteraction(intent: intent, response: nil) interaction.direction = .incoming interaction.donate(completion: nil)

Slide 26

Slide 26 text

࣮૷खॱ  ૹ৴ऀΛද͢*/1FSTPOΛ༻ҙ  ϝοηʔδͷड৴Λද͢*/4FOE.FTTBHF*OUFOUΛ༻ҙ  */4FOE.FTTBHF*OUFOUΛEPOBUF  */4FOE.FTTBHF*OUFOUΛ࢖ͬͯ௨஌Λߋ৽

Slide 27

Slide 27 text

*/4FOE.FTTBHF*OUFOUΛ࢖ͬͯ௨஌Λߋ৽ var content: UNNotificationContent = UNMutableNotificationContent() let updatedContent = try! content.updating(from: intent) // notification service extension contentHandler(updatedcontent) // local notification let request = UNNotificationRequest( identifier: UUID().uuidString, content: updatedcontent, trigger: nil ) UNUserNotificationCenter.current().add(request)

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

(SPVQ$PNNVOJDBUJPO/PUJGJDBUJPO

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

ૹ৴ऀͱ͸ผͷΞΠίϯ άϧʔϓͷ໊લ

Slide 32

Slide 32 text

(SPVQ$PNNVOJDBUJPO/PUJGJDBUJPO let intent = INSendMessageIntent( recipients: nil, outgoingMessageType: .outgoingMessageText, content: "通知の内容", speakableGroupName: INSpeakableString(spokenPhrase: "グループ名"), conversationIdentifier: "xxxxx", serviceName: nil, sender: sender, attachments: nil ) intent.setImage(groupImage, forParameterNamed: ¥.speakableGroupName)

Slide 33

Slide 33 text

(SPVQ$PNNVOJDBUJPO/PUJGJDBUJPO let intent = INSendMessageIntent( recipients: nil, outgoingMessageType: .outgoingMessageText, content: "通知の内容", speakableGroupName: INSpeakableString(spokenPhrase: "グループ名"), conversationIdentifier: "xxxxx", serviceName: nil, sender: sender, attachments: nil ) intent.setImage(groupImage, forParameterNamed: .speakableGroupName) αϒλΠτϧʹग़͢άϧʔϓ໊

Slide 34

Slide 34 text

(SPVQ$PNNVOJDBUJPO/PUJGJDBUJPO let intent = INSendMessageIntent( recipients: nil, outgoingMessageType: .outgoingMessageText, content: "通知の内容", speakableGroupName: INSpeakableString(spokenPhrase: "グループ名"), conversationIdentifier: "xxxxx", serviceName: nil, sender: sender, attachments: nil ) intent.setImage(groupImage, forParameterNamed: .speakableGroupName) άϧʔϓͷΞΠίϯ

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

άϧʔϓ໊͕ग़͍ͯͳ͍  ΞΠίϯ͕άϧʔϓ༻ʹมΘ͍ͬͯͳ͍

Slide 37

Slide 37 text

(SPVQ$PNNVOJDBUJPO/PUJGJDBUJPO let intent = INSendMessageIntent( recipients: nil, outgoingMessageType: .outgoingMessageText, content: "通知の内容", speakableGroupName: INSpeakableString(spokenPhrase: "グループ名"), conversationIdentifier: "xxxxx", serviceName: nil, sender: sender, attachments: nil ) intent.setImage(groupImage, forParameterNamed: ¥.speakableGroupName)

Slide 38

Slide 38 text

(SPVQ$PNNVOJDBUJPO/PUJGJDBUJPO let intent = INSendMessageIntent( recipients: nil, outgoingMessageType: .outgoingMessageText, content: "通知の内容", speakableGroupName: INSpeakableString(spokenPhrase: "グループ名"), conversationIdentifier: "xxxxx", serviceName: nil, sender: sender, attachments: nil ) intent.setImage(groupImage, forParameterNamed: ¥.speakableGroupName)

Slide 39

Slide 39 text

(SPVQ$PNNVOJDBUJPO/PUJGJDBUJPO let intent = INSendMessageIntent( recipients: [personA, personB], outgoingMessageType: .outgoingMessageText, content: "通知の内容", speakableGroupName: INSpeakableString(spokenPhrase: "グループ名"), conversationIdentifier: "xxxxx", serviceName: nil, sender: sender, attachments: nil ) intent.setImage(groupImage, forParameterNamed: .speakableGroupName) άϧʔϓͷଞͷड৴ऀ ࣗ෼͸ؚΊͳ͍ ࣗ෼͕ड৴ऀͳͷ͸ࣗ໌ͳͷͰؚΊͯ΋ແࢹ͞ΕΔ ʂ ஫ҙ

Slide 40

Slide 40 text

ิ଍ */1FSTPOʹ͓͚Δʮࣗ෼ʯͱ͸ʁ let me = INPerson( personHandle: .init(value: "[email protected]", type: .emailAddress), nameComponents: nil, displayName: "まつじ", image: image, contactIdentifier: nil, customIdentifier: "xxxxxxx", isMe: true, suggestionType: .none )

Slide 41

Slide 41 text

ิ଍ */1FSTPOʹ͓͚Δʮࣗ෼ʯͱ͸ʁ let me = INPerson( personHandle: .init(value: "[email protected]", type: .emailAddress), nameComponents: nil, displayName: "まつじ", image: image, contactIdentifier: nil, customIdentifier: "xxxxxxx", isMe: true, suggestionType: .none ) σϑΥϧτ͸GBMTF

Slide 42

Slide 42 text

(SPVQ$PNNVOJDBUJPO/PUJGJDBUJPO let intent = INSendMessageIntent( recipients: [personA, personB], outgoingMessageType: .outgoingMessageText, content: "通知の内容", speakableGroupName: INSpeakableString(spokenPhrase: "グループ名"), conversationIdentifier: "xxxxx", serviceName: nil, sender: sender, attachments: nil ) intent.setImage(groupImage, forParameterNamed: .speakableGroupName)

Slide 43

Slide 43 text

(SPVQ$PNNVOJDBUJPO/PUJGJDBUJPO let intent = INSendMessageIntent( recipients: [personA, personB], outgoingMessageType: .outgoingMessageText, content: "通知の内容", speakableGroupName: INSpeakableString(spokenPhrase: "グループ名"), conversationIdentifier: "xxxxx", serviceName: nil, sender: sender, attachments: nil ) intent.setImage(groupImage, forParameterNamed: .speakableGroupName) ड৴ऀ͕ଟ͍৔߹ɺϝϞϦͷ৺഑͕

Slide 44

Slide 44 text

*/4FOE.FTTBHF*OUFOU%POBUJPO.FUBEBUB

Slide 45

Slide 45 text

@available(iOS 15.0, *) open class INSendMessageIntentDonationMetadata : INIntentDonationMetadata { open var mentionsCurrentUser: Bool open var isReplyToCurrentUser: Bool open var notifyRecipientAnyway: Bool open var recipientCount: Int public init() }

Slide 46

Slide 46 text

@available(iOS 15.0, *) open class INSendMessageIntentDonationMetadata : INIntentDonationMetadata { open var mentionsCurrentUser: Bool open var isReplyToCurrentUser: Bool open var notifyRecipientAnyway: Bool open var recipientCount: Int public init() } ࣗ෼͕ϝϯγϣϯ͞Ε͍ͯΔ͔Ͳ͏͔

Slide 47

Slide 47 text

@available(iOS 15.0, *) open class INSendMessageIntentDonationMetadata : INIntentDonationMetadata { open var mentionsCurrentUser: Bool open var isReplyToCurrentUser: Bool open var notifyRecipientAnyway: Bool open var recipientCount: Int public init() } ࣗ෼ͷϝοηʔδʹฦ৴͔ͨ͠Ͳ͏͔

Slide 48

Slide 48 text

@available(iOS 15.0, *) open class INSendMessageIntentDonationMetadata : INIntentDonationMetadata { open var mentionsCurrentUser: Bool open var isReplyToCurrentUser: Bool open var notifyRecipientAnyway: Bool open var recipientCount: Int public init() } ڧ੍తʹ௨஌͢Δϝοηʔδ͔Ͳ͏͔

Slide 49

Slide 49 text

@available(iOS 15.0, *) open class INSendMessageIntentDonationMetadata : INIntentDonationMetadata { open var mentionsCurrentUser: Bool open var isReplyToCurrentUser: Bool open var notifyRecipientAnyway: Bool open var recipientCount: Int public init() } ड৴ऀͷ਺ ࠓճ͸͜ΕΛ࢖͏

Slide 50

Slide 50 text

*/4FOE.FTTBHF*OUFOU%POBUJPO.FUBEBUB let intent = INSendMessageIntent( recipients: [personA, personB], ... )

Slide 51

Slide 51 text

*/4FOE.FTTBHF*OUFOU%POBUJPO.FUBEBUB let intent = INSendMessageIntent( recipients: nil, ... ) OJMʹ໭͢

Slide 52

Slide 52 text

*/4FOE.FTTBHF*OUFOU%POBUJPO.FUBEBUB let intent = INSendMessageIntent( recipients: nil, ... ) let metadata = INSendMessageIntentDonationMetadata() metadata.recipientCount = 2 intent.donationMetadata = metadata

Slide 53

Slide 53 text

*/4FOE.FTTBHF*OUFOU%POBUJPO.FUBEBUB let intent = INSendMessageIntent( recipients: nil, ... ) let metadata = INSendMessageIntentDonationMetadata() metadata.recipientCount = 2 intent.donationMetadata = metadata ͜ͷ஋͕Ҏ্ͳΒ (SPVQ$PNNVOJDBUJPO/PUJGJDBUJPOʹʂ

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

·ͱΊ • $PNNVOJDBUJPO/PUJGJDBUJPOͷ࣮૷ࣗମ͸؆୯ • ֤ͨͩ͠ύϥϝʔλͷ໾ׂ΍ӨڹΛཧղ͢Δͷ͸݁ߏେม "QQMFͷυΩϡϝϯτʹ༗༻ͳ৘ใ͕গͳ͍

Slide 56

Slide 56 text

·ͱΊ • $PNNVOJDBUJPO/PUJGJDBUJPOͷ࣮૷ࣗମ͸؆୯ • ֤ͨͩ͠ύϥϝʔλͷ໾ׂ΍ӨڹΛཧղ͢Δͷ͸݁ߏେม "QQMFͷυΩϡϝϯτʹ༗༻ͳ৘ใ͕গͳ͍ ͱࢥͬͨΒɺ"QQMF͕͠ΕͬͱυΩϡϝϯτΛ ެ։͍ͯͨ͠ͷͰͦͪΒΛࢀߟʹʂ

Slide 57

Slide 57 text

IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOVTFSOPUJGJDBUJPOTJNQMFNFOUJOH@DPNNVOJDBUJPO@OPUJGJDBUJPOT

Slide 58

Slide 58 text

IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOVTFSOPUJGJDBUJPOTJNQMFNFOUJOH@DPNNVOJDBUJPO@OPUJGJDBUJPOT ׬