Skip to content

Commit f9cc2f6

Browse files
committed
Add INSendMessageIntent NSUserActivity support to the main App
This allows for shortcuts and with merge of matrix-org/matrix-ios-kit#906 support for Siri suggestions to open the app. Signed-off-by: Finn Behrens <[email protected]>
1 parent 8510027 commit f9cc2f6

File tree

4 files changed

+502
-0
lines changed

4 files changed

+502
-0
lines changed

Riot/Generated/InfoPlist.swift

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ internal enum InfoPlist {
3535
internal static let nsMicrophoneUsageDescription: String = _document["NSMicrophoneUsageDescription"]
3636
internal static let nsPhotoLibraryUsageDescription: String = _document["NSPhotoLibraryUsageDescription"]
3737
internal static let nsSiriUsageDescription: String = _document["NSSiriUsageDescription"]
38+
internal static let nsUserActivityTypes: [String] = _document["NSUserActivityTypes"]
3839
internal static let uiBackgroundModes: [String] = _document["UIBackgroundModes"]
3940
internal static let uiLaunchStoryboardName: String = _document["UILaunchStoryboardName"]
4041
internal static let uiRequiredDeviceCapabilities: [String] = _document["UIRequiredDeviceCapabilities"]

Riot/Modules/Application/LegacyAppDelegate.m

+20
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,26 @@ - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserAct
748748
{
749749
continueUserActivity = [self handleUniversalLink:userActivity];
750750
}
751+
else if ([userActivity.activityType isEqualToString:INSendMessageIntentIdentifier])
752+
{
753+
INInteraction *interaction = userActivity.interaction;
754+
if (interaction && [interaction.intent isKindOfClass:[INSendMessageIntent class]])
755+
{
756+
INSendMessageIntent *intent = (INSendMessageIntent *)(interaction.intent);
757+
INPerson *person = intent.recipients.firstObject;
758+
if (person && person.customIdentifier) {
759+
NSString *identifier = person.customIdentifier;
760+
761+
[self startDirectChatWithUserId:identifier completion:NULL];
762+
// TODO: initialize text if from a siri shortcut
763+
continueUserActivity = YES;
764+
} else {
765+
MXLogWarning(@"A recipient was missing in the INSendMessageIntent");
766+
}
767+
} else {
768+
MXLogWarning(@"How can an INSendMessageIntent activity not have an INSendMessageIntent?");
769+
}
770+
}
751771
else if ([userActivity.activityType isEqualToString:INStartAudioCallIntentIdentifier] ||
752772
[userActivity.activityType isEqualToString:INStartVideoCallIntentIdentifier])
753773
{

Riot/SupportingFiles/Info.plist

+6
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@
6565
<string>The photo library is used to send photos and videos.</string>
6666
<key>NSSiriUsageDescription</key>
6767
<string>Siri is used to perform calls even from the lock screen.</string>
68+
<key>NSUserActivityTypes</key>
69+
<array>
70+
<string>INSendMessageIntent</string>
71+
<string>INStartAudioCallIntent</string>
72+
<string>INStartVideoCallIntent</string>
73+
</array>
6874
<key>UIBackgroundModes</key>
6975
<array>
7076
<string>audio</string>

0 commit comments

Comments
 (0)