2016-03-21 4 views
0
immer genannt

ich mit Objective C Uberkit Bibliothek arbeite Benutzer mit Uber zu authentifizieren und einige API-Methoden aufrufen implementiert es in Meine App ist für iOS zusammengestellt 9.UberKit Anwendung: openURL. SourceApplication Nicht

Ich habe erfolgreich integriert Das SDK und UberKit authentifiziert einen Benutzer, indem er eine Safari für den OAuth-Flow öffnet. Safari ist jedoch nach dem Aufruf der Weiterleitungs-URL mit dem Auth-Code von Uber festgefahren.

Es scheint, wie die application:openURL:sourceApplication:annotation Methode in AppDelegate nie aufgerufen. Unten ist, wie die obige Methode in meinem AppDelegate aussieht.

- (BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    NSLog(@"Not Called"); 
    if([[UberKit sharedInstance] handleLoginRedirectFromUrl:url sourceApplication:sourceApplication]) 
    { 
     return YES; 
    } 
    else 
    { 
     return NO; 
    } 
} 

- (BOOL)application:(UIApplication *)app 
     openURL:(NSURL *)url 
     options:(NSDictionary<NSString *,id> *)options { 
     NSLog(@"URL scheme:%@", [url scheme]); 

     if([[UberKit sharedInstance] handleLoginRedirectFromUrl:url sourceApplication:[url scheme]]) 
     { 
     return YES; 
     } 
     return NO; 
} 

Die relevanten Teile meiner Info.plist Datei sind unten gezeigt.

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeRole</key> 
     <string>Editor</string> 
     <key>CFBundleURLName</key> 
     <string>com.go.UberChat</string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>uberkit</string> 
     </array> 
    </dict> 
</array> 
<key>CFBundleVersion</key> 
<string>1</string> 
<key>LSRequiresIPhoneOS</key> 
<true/> 
<key>UILaunchStoryboardName</key> 
<string>LaunchScreen</string> 
<key>UIMainStoryboardFile</key> 
<string>Main</string> 
<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>uber</string> 
    <string>https://www.example.com</string> 
</array> 
<key>NSAppTransportSecurity</key> 
<dict> 
    <!--Include to allow all connections --> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

https://www.example.com ist meine Redirect-URL so die Safari im https://www.example.com/?code=3iSwJyxezGi41zliUaNj5SyXYZXYZ stecken und kehrt nicht zu meiner app, so dass der Rest des Oauth Fluss stattfinden kann.

Alles, was ich vermisse? Ich habe versucht, meine App für iOS 8 noch kein Glück zu kompilieren. Ich versuchte auch - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url Methode in meinem AppDelegate Aufruf, aber immer noch kein Glück.

Enabled Associated Domains

+0

sind Sie aktiviert die zugeordneten Domains in Ihrer App-ID –

+0

bin nicht sicher, was du meinst, bitte klären Sie weiter. – nmvictor

+0

Haben Sie herausgefunden, warum es nicht angerufen wird? Ich habe ein ähnliches Problem und es betrifft nur iOS 8 (iOS 9 funktioniert wie erwartet). –

Antwort

0

Mein Problem Das Problem sein kann, weil das SDK nicht application:openURL:sourceApplication:annotation wird im Stich gelassen aufgerufen. Ich hatte ein ähnliches Problem mit Google/SignIn. Meine Lösung war, den Pod auf pod 'Google/SignIn', '~> 2.0' zu setzen. Und das hat mein Problem behoben.

Verwandte Themen