未使用DropBox SDK为iPhone应用程序调用handOpenURL
我使用的是MacOSX 10.6,Xcode模拟器是4.2,但在尽了最大努力之后,handleOpenURL在我的appdelegate.m文件中没有被调用,我在那里实现了它。我已经按照DropBox站点()中给出的教程中的所有说明进行了操作 但是,一旦用户允许我的应用程序访问,在通过safari从dropbox帐户登录后,控件将重定向到我的“与dropbox的链接”视图,即用户有机会登录的视图 问题是,handleOpenURL方法没有被调用,didfinishWithLaunchingOptions方法也没有被调用。我在与同一主题相关的各种论坛的一些帖子中看到,如果我们实现后者(didfinishWithLaunchingOptions)方法,handleOpenWithURL将不会被调用,是吗 如果没有,你能帮我找出代码中的错误吗。。我是这个领域的初学者,非常感谢你在这方面的帮助 以下是appdelegate.m文件中的代码段未使用DropBox SDK为iPhone应用程序调用handOpenURL,iphone,objective-c,ios,dropbox,dropbox-api,Iphone,Objective C,Ios,Dropbox,Dropbox Api,我使用的是MacOSX 10.6,Xcode模拟器是4.2,但在尽了最大努力之后,handleOpenURL在我的appdelegate.m文件中没有被调用,我在那里实现了它。我已经按照DropBox站点()中给出的教程中的所有说明进行了操作 但是,一旦用户允许我的应用程序访问,在通过safari从dropbox帐户登录后,控件将重定向到我的“与dropbox的链接”视图,即用户有机会登录的视图 问题是,handleOpenURL方法没有被调用,didfinishWithLaunchingOpt
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"Inside didfinishwithoptions");
DBSession* dbSession = [[[DBSession alloc] initWithAppKey:@"APP-KEY"
appSecret:@"APP-SECRET"
root:kDBRootAppFolder] // either kDBRootAppFolder or kDBRootDropbox
autorelease];
[DBSession setSharedSession:dbSession];
// Override point for customization after application launch.
// Add the view controller's view to the window and display.
[self.window addSubview:viewController.view];
[self.window makeKeyAndVisible];
return YES;
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
NSLog(@"Inside handleOpenURL");
return NO;
}
我认为当您将目标设置为iOS 4.2或更高版本时,不会调用
application:handleopeanurl:
。改用application:openURL:sourceApplication:annotation:
更多
更新:您是否仔细检查了应用程序的plist文件中的
CFBundleURLTypes
条目?它应该是这样的:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>DropBoxURLScheme</string>
<key>CFBundleURLSchemes</key>
<array>
<string>db-something</string>
</array>
</dict>
</array>
如果上述方法无效,你一定是做错了别的事情。然后更仔细地遵循DropBox的教程。如果swift>=iOS 13,则向ScenedLegate.swift添加以下函数似乎有效:
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let url = URLContexts.first?.url {
print(url)
if let authResult = DropboxClientsManager.handleRedirectURL(url) {
switch authResult {
case .success:
print("Success! User is logged into Dropbox.")
case .cancel:
print("Authorization flow was manually canceled by user!")
case .error(_, let description):
print("Error: \(description)")
}
}
}
}
func场景(scene:UIScene,openURLContexts:Set){
如果让url=URLContexts.first?.url{
打印(url)
如果让authResult=DropboxClientsManager.handleRedirectURL(url){
切换authResult{
成功案例:
打印(“成功!用户已登录Dropbox。”)
案例。取消:
打印(“用户手动取消了授权流!”)
案例错误(Ulet,描述):
打印(“错误:\(说明)”)
}
}
}
}
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let url = URLContexts.first?.url {
print(url)
if let authResult = DropboxClientsManager.handleRedirectURL(url) {
switch authResult {
case .success:
print("Success! User is logged into Dropbox.")
case .cancel:
print("Authorization flow was manually canceled by user!")
case .error(_, let description):
print("Error: \(description)")
}
}
}
}