handOpenURL не вызывается для приложения iPhone с использованием DropBox SDK - PullRequest
1 голос
/ 19 января 2012

Я использую MacOSX 10.6, и имитатор Xcode - 4.2, но после того, как я приложил все усилия, handleOpenURL не вызывается в моем файле appdelegate.m, где я его реализовал. Я выполнил все инструкции в руководстве, приведенном на сайте DropBox ( Руководство по DropBox ),

но, как только пользователь разрешает доступ к моему приложению, после входа оттуда с учетной записи Dropbox через Safari, элемент управления перенаправляется в мое представление «Link with 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;
}

1 Ответ

2 голосов
/ 19 января 2012

Я думаю, что application:handleOpenURL: не вызывается, когда вы устанавливаете цель на iOS 4.2 или новее. Вместо этого используйте application:openURL:sourceApplication:annotation:.

Подробнее в UIApplicationDelegate docs .

UPDATE:
Вы дважды проверили запись CFBundleURLTypes в файле plist вашего приложения? Должно быть что-то вроде этого:

<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.

...