Facebook API と Instagram API の両方を使用するアプリがあり、どちらの場合も次のデリゲート メソッドを使用する必要があります。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [PFFacebookUtils handleOpenURL:url];
}
これはInstagramから提供されたコードです:
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [self.instagram handleOpenURL:url];
}
ご覧のとおり、これは問題です。URL ハンドラーを 1 つしか返すことができないため、どのハンドラーを返すかを決定する必要があります。
私のアプリデリゲートでは、上記の Instagram オプションをコメントアウトし、Facebook のみを残しました。予想どおり、Facebook は問題なく動作しますが、Instagram で承認をタップすると、次のエラーが発生します。
明らかに、Facebook は Instagram からの戻り URL を処理しようとしているため、エラーが発生します。
URL をチェックして、試している各サービスのアプリ ID が含まれているかどうかを確認することは妥当でしょうか? URL に Instagram ID が含まれている場合は Instagram ハンドラーを返し、Facebook ID が含まれている場合は Facebook ハンドラーを返します。
どんな助けでも大歓迎です、ありがとう!
ベストアンサー1
Facebook と Instagram の両方で、サービス用にカスタム URL スキームが設定されているため、それを使用して URL をフィルタリングします。
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
if ([[url scheme] isEqualToString:INSTAGRAM_SCHEME])
return [self.instagram handleOpenURL:url];
if ([[url scheme] isEqualToString:FACEBOOK_SCHEME])
return [PFFacebookUtils handleOpenURL:url];
return NO;
}
変数を次のように定義します
#define INSTAGRAM_SCHEME @"ig12345678910"
#define FACEBOOK_SCHEME @"fb12345678910"
Info.plist
ファイルに記載したとおり