Sfoglia il codice sorgente

fix(deeplinking): After braking it with the dropbox implementation.

master
hristoterezov 7 anni fa
parent
commit
467452d110
4 ha cambiato i file con 71 aggiunte e 55 eliminazioni
  1. 32
    14
      ios/README.md
  2. 5
    14
      ios/app/src/AppDelegate.m
  3. 8
    7
      ios/sdk/src/JitsiMeetView.m
  4. 26
    20
      ios/sdk/src/dropbox/Dropbox.m

+ 32
- 14
ios/README.md Vedi File

@@ -125,7 +125,23 @@ continueUserActivity:(NSUserActivity *)userActivity
125 125
                continueUserActivity:userActivity
126 126
                  restorationHandler:restorationHandler];
127 127
 }
128
+```
129
+
130
+And also one of the following:
128 131
 
132
+```objc
133
+// See https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application?language=objc
134
+- (BOOL)application:(UIApplication *)app
135
+            openURL:(NSURL *)url
136
+            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
137
+  return [JitsiMeetView application:app
138
+                            openURL:url
139
+                            options: options];
140
+}
141
+```
142
+or
143
+```objc
144
+// See https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc
129 145
 - (BOOL)application:(UIApplication *)application
130 146
             openURL:(NSURL *)url
131 147
   sourceApplication:(NSString *)sourceApplication
@@ -215,31 +231,33 @@ user to request entering Picture-in-Picture.
215 231
 
216 232
 ## Dropbox integration
217 233
 
218
-To setup the dropbox integration you need to do the following steps:
234
+To setup the Dropbox integration, follow these steps:
219 235
 
220
-1. Add the following lines in your Info.plist file and replace `<APP_KEY>` with your dropbox app key:
236
+1. Add the following to the app's Info.plist and change `<APP_KEY>` to your
237
+Dropbox app key:
221 238
 ```
222 239
 <key>CFBundleURLTypes</key>
223 240
 <array>
224
-    <dict>
225
-        <key>CFBundleURLSchemes</key>
226
-        <array>
227
-            <string>db-<APP_KEY></string>
228
-        </array>
229
-        <key>CFBundleURLName</key>
230
-        <string></string>
231
-    </dict>
241
+  <dict>
242
+    <key>CFBundleURLName</key>
243
+    <string></string>
244
+    <key>CFBundleURLSchemes</key>
245
+    <array>
246
+      <string>db-<APP_KEY></string>
247
+    </array>
248
+  </dict>
232 249
 </array>
233 250
 <key>LSApplicationQueriesSchemes</key>
234 251
 <array>
235
-    <string>dbapi-8-emm</string>
236
-    <string>dbapi-2</string>
252
+  <string>dbapi-2</string>
253
+  <string>dbapi-8-emm</string>
237 254
 </array>
238 255
 ```
239 256
 
240
-2. Add the following method to `AppDelegate`:
257
+2. Add the following to the app's `AppDelegate`:
241 258
 ```objc
242
-- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
259
+- (BOOL)application:(UIApplication *)app
260
+            openURL:(NSURL *)url
243 261
             options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
244 262
   return [JitsiMeetView application:app
245 263
                             openURL:url

+ 5
- 14
ios/app/src/AppDelegate.m Vedi File

@@ -36,22 +36,13 @@
36 36
                    restorationHandler:restorationHandler];
37 37
 }
38 38
 
39
-- (BOOL)application:(UIApplication *)application
40
-            openURL:(NSURL *)url
41
-  sourceApplication:(NSString *)sourceApplication
42
-         annotation:(id)annotation {
43
-    return [JitsiMeetView application:application
44
-                              openURL:url
45
-                    sourceApplication:sourceApplication
46
-                           annotation:annotation];
47
-}
48 39
 
49
-
50
-- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
40
+- (BOOL)application:(UIApplication *)app
41
+            openURL:(NSURL *)url
51 42
             options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
52
-  return [JitsiMeetView application:app
53
-                            openURL:url
54
-                            options: options];
43
+    return [JitsiMeetView application:app
44
+                              openURL:url
45
+                              options:options];
55 46
 }
56 47
 
57 48
 @end

+ 8
- 7
ios/sdk/src/JitsiMeetView.m Vedi File

@@ -195,6 +195,14 @@ static NSMapTable<NSString *, JitsiMeetView *> *views;
195 195
                        restorationHandler:restorationHandler];
196 196
 }
197 197
 
198
++ (BOOL)application:(UIApplication *)app
199
+            openURL:(NSURL *)url
200
+            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
201
+    return
202
+        [Dropbox application:app openURL:url options:options]
203
+            || [RCTLinkingManager application:app openURL:url options:options];
204
+}
205
+
198 206
 + (BOOL)application:(UIApplication *)application
199 207
             openURL:(NSURL *)url
200 208
   sourceApplication:(NSString *)sourceApplication
@@ -214,13 +222,6 @@ static NSMapTable<NSString *, JitsiMeetView *> *views;
214 222
                                annotation:annotation];
215 223
 }
216 224
 
217
-+ (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
218
-            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
219
-    return [Dropbox application:app
220
-                              openURL:url
221
-                              options: options];
222
-}
223
-
224 225
 #pragma mark Initializers
225 226
 
226 227
 - (instancetype)init {

+ 26
- 20
ios/sdk/src/dropbox/Dropbox.m Vedi File

@@ -16,6 +16,7 @@
16 16
 
17 17
 #import <React/RCTBridgeModule.h>
18 18
 #import <ObjectiveDropboxOfficial/ObjectiveDropboxOfficial.h>
19
+
19 20
 #import "Dropbox.h"
20 21
 
21 22
 RCTPromiseResolveBlock currentResolve = nil;
@@ -24,19 +25,19 @@ RCTPromiseRejectBlock currentReject = nil;
24 25
 @implementation Dropbox
25 26
 
26 27
 + (NSString *)getAppKey{
27
-    NSArray *urlTypes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLTypes"];
28
-    for(NSDictionary<NSString *, NSArray *> *urlType in urlTypes) {
28
+    NSArray *urlTypes
29
+        = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLTypes"];
30
+
31
+    for (NSDictionary<NSString *, NSArray *> *urlType in urlTypes) {
29 32
         NSArray *urlSchemes = urlType[@"CFBundleURLSchemes"];
30
-        if(urlSchemes != nil) {
31
-            for(NSString *urlScheme in urlSchemes) {
32
-                if(urlScheme != nil) {
33
-                    if ([urlScheme hasPrefix:@"db-"]) {
34
-                        return [urlScheme substringFromIndex:3];
35
-                    }
33
+
34
+        if (urlSchemes) {
35
+            for (NSString *urlScheme in urlSchemes) {
36
+                if (urlScheme && [urlScheme hasPrefix:@"db-"]) {
37
+                    return [urlScheme substringFromIndex:3];
36 38
                 }
37 39
             }
38 40
         }
39
-        
40 41
     }
41 42
    
42 43
     return nil;
@@ -52,7 +53,7 @@ RCT_EXPORT_MODULE();
52 53
     };
53 54
 };
54 55
 
55
-RCT_EXPORT_METHOD(authorize: (RCTPromiseResolveBlock)resolve
56
+RCT_EXPORT_METHOD(authorize:(RCTPromiseResolveBlock)resolve
56 57
                   reject:(__unused RCTPromiseRejectBlock)reject) {
57 58
     currentResolve = resolve;
58 59
     currentReject = reject;
@@ -75,7 +76,7 @@ RCT_EXPORT_METHOD(getDisplayName: (NSString *)token
75 76
             resolve(result.name.displayName);
76 77
         } else {
77 78
             NSString *msg = @"Failed!";
78
-            if (networkError != nil) {
79
+            if (networkError) {
79 80
                 msg = [NSString stringWithFormat:@"Failed! Error: %@", networkError];
80 81
             }
81 82
             reject(@"getDisplayName", @"Failed", nil);
@@ -93,7 +94,7 @@ RCT_EXPORT_METHOD(getSpaceUsage: (NSString *)token
93 94
             DBUSERSSpaceAllocation *allocation = result.allocation;
94 95
             NSNumber *allocated = 0;
95 96
             NSNumber *used = 0;
96
-            if([allocation isIndividual]) {
97
+            if ([allocation isIndividual]) {
97 98
                 allocated = allocation.individual.allocated;
98 99
                 used = result.used;
99 100
             } else if ([allocation isTeam]) {
@@ -108,7 +109,7 @@ RCT_EXPORT_METHOD(getSpaceUsage: (NSString *)token
108 109
             resolve(dictionary);
109 110
         } else {
110 111
             NSString *msg = @"Failed!";
111
-            if (networkError != nil) {
112
+            if (networkError) {
112 113
                 msg = [NSString stringWithFormat:@"Failed! Error: %@", networkError];
113 114
             }
114 115
             reject(@"getSpaceUsage", msg, nil);
@@ -117,15 +118,18 @@ RCT_EXPORT_METHOD(getSpaceUsage: (NSString *)token
117 118
 
118 119
 }
119 120
 
120
-+ (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
121
++ (BOOL)application:(UIApplication *)app
122
+            openURL:(NSURL *)url
121 123
             options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
124
+    if (currentReject == nil || currentResolve == nil) {
125
+        return NO;
126
+    }
122 127
     DBOAuthResult *authResult = [DBClientsManager handleRedirectURL:url];
123
-    if (authResult != nil) {
128
+    if (authResult) {
124 129
         if ([authResult isSuccess]) {
125 130
             currentResolve(authResult.accessToken.accessToken);
126 131
             currentResolve = nil;
127 132
             currentReject = nil;
128
-            return YES;
129 133
         } else {
130 134
             NSString *msg;
131 135
             if ([authResult isError]) {
@@ -137,13 +141,15 @@ RCT_EXPORT_METHOD(getSpaceUsage: (NSString *)token
137 141
             currentResolve = nil;
138 142
             currentReject = nil;
139 143
         }
144
+        return YES;
140 145
     }
141 146
     return NO;
142 147
 }
143 148
 
144
-+ (UIViewController*)topMostController
149
++ (UIViewController *)topMostController
145 150
 {
146
-    UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
151
+    UIViewController *topController
152
+        = [UIApplication sharedApplication].keyWindow.rootViewController;
147 153
     
148 154
     while (topController.presentedViewController) {
149 155
         topController = topController.presentedViewController;
@@ -154,10 +160,10 @@ RCT_EXPORT_METHOD(getSpaceUsage: (NSString *)token
154 160
 
155 161
 + (void)setAppKey {
156 162
     NSString *appKey = [self getAppKey];
157
-    if (appKey != nil) {
163
+
164
+    if (appKey) {
158 165
         [DBClientsManager setupWithAppKey:appKey];
159 166
     }
160 167
 }
161 168
 
162
-
163 169
 @end

Loading…
Annulla
Salva