123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- /*
- * Copyright @ 2018-present 8x8, Inc.
- * Copyright @ 2017-2018 Atlassian Pty Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- #import <Availability.h>
-
- @import CoreSpotlight;
- @import MobileCoreServices;
- @import Intents; // Needed for NSUserActivity suggestedInvocationPhrase
-
- @import JitsiMeet;
-
- #import "Types.h"
- #import "ViewController.h"
-
-
- @implementation ViewController
-
- - (void)viewDidLoad {
- [super viewDidLoad];
-
- JitsiMeetView *view = (JitsiMeetView *) self.view;
- view.delegate = self;
-
- [view join:[[JitsiMeet sharedInstance] getInitialConferenceOptions]];
- }
-
- // JitsiMeetViewDelegate
-
- - (void)_onJitsiMeetViewDelegateEvent:(NSString *)name
- withData:(NSDictionary *)data {
- NSLog(
- @"[%s:%d] JitsiMeetViewDelegate %@ %@",
- __FILE__, __LINE__, name, data);
-
- #if DEBUG
- NSAssert(
- [NSThread isMainThread],
- @"JitsiMeetViewDelegate %@ method invoked on a non-main thread",
- name);
- #endif
- }
-
- - (void)conferenceJoined:(NSDictionary *)data {
- [self _onJitsiMeetViewDelegateEvent:@"CONFERENCE_JOINED" withData:data];
-
- // Register a NSUserActivity for this conference so it can be invoked as a
- // Siri shortcut. This is only supported in iOS >= 12.
- #ifdef __IPHONE_12_0
- if (@available(iOS 12.0, *)) {
- NSUserActivity *userActivity
- = [[NSUserActivity alloc] initWithActivityType:JitsiMeetConferenceActivityType];
-
- NSString *urlStr = data[@"url"];
- NSURL *url = [NSURL URLWithString:urlStr];
- NSString *conference = [url.pathComponents lastObject];
-
- userActivity.title = [NSString stringWithFormat:@"Join %@", conference];
- userActivity.suggestedInvocationPhrase = @"Join my Jitsi meeting";
- userActivity.userInfo = @{@"url": urlStr};
- [userActivity setEligibleForSearch:YES];
- [userActivity setEligibleForPrediction:YES];
- [userActivity setPersistentIdentifier:urlStr];
-
- // Subtitle
- CSSearchableItemAttributeSet *attributes
- = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeItem];
- attributes.contentDescription = urlStr;
- userActivity.contentAttributeSet = attributes;
-
- self.userActivity = userActivity;
- [userActivity becomeCurrent];
- }
- #endif
-
- }
-
- - (void)conferenceTerminated:(NSDictionary *)data {
- [self _onJitsiMeetViewDelegateEvent:@"CONFERENCE_TERMINATED" withData:data];
- }
-
- - (void)conferenceWillJoin:(NSDictionary *)data {
- [self _onJitsiMeetViewDelegateEvent:@"CONFERENCE_WILL_JOIN" withData:data];
- }
-
- #if 0
- - (void)enterPictureInPicture:(NSDictionary *)data {
- [self _onJitsiMeetViewDelegateEvent:@"ENTER_PICTURE_IN_PICTURE" withData:data];
- }
- #endif
-
- @end
|