1

私はMacOSX10.6を使用しており、Xcodeシミュレーターは4.2ですが、最善を尽くした後、それを実装したappdelegate.mファイルでhandleOpenURLが呼び出されません。DropBoxサイト( DropBoxチュートリアル)にあるチュートリアルのすべての指示に従いました。

ただし、ユーザーがアプリケーションへのアクセスを許可すると、ドロップボックスアカウントからsafariを介してログインした後、コントロールは「DropBoxとのリンク」ビュー、つまりユーザーがログインする機会を得るビューにリダイレクトされます。

問題は、handleOpenURLメソッドが呼び出されず、didfinishWithLaunchingOptionsメソッドも呼び出されないことです。同じトピックに関連するさまざまなフォーラムのいくつかの投稿で、後者(didfinishWithLaunchingOptions)メソッドを実装すると、handleOpenWithURLが呼び出されないことを確認しました。

そうでない場合は、私のコードのエラーを見つけるのを手伝っていただけませんか。私はこの分野の初心者であり、この点であなたの助けに本当に感謝します。

以下は、appdelegate.mファイルのコードスニペットです。

- (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;
}
4

2 に答える 2

2

application:handleOpenURL:iOS4.2以降にターゲットを設定した場合は呼び出されないと思います。application:openURL:sourceApplication:annotation:代わりに使用してください。

UIApplicationDelegateドキュメントの詳細。

更新:アプリケーションのplistファイルのエントリ
を再確認しましたか?CFBundleURLTypesそれはそのようなもののようになるはずです:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLName</key>
    <string>DropBoxURLScheme</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>db-something</string>
    </array>
  </dict>
</array>

セッションを開始するよりも(上記の「何か」の部分がアプリキーとして使用されていることに注意してください):

DBSession* dbSession = [[[DBSession alloc] initWithAppKey:@"something" appSecret:@"APP_SECRET" root:ACCESS_TYPE] autorelease];

上記が役に立たない場合は、何か他のことを間違っているに違いありません。その後、DropBoxのチュートリアルに注意深く従ってください。

于 2012-01-19T13:18:24.937 に答える
0

Swift >= iOS 13 の場合、SceneDelegate.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)")
            }
        }
    }
}
于 2020-07-19T09:13:57.943 に答える