私はFacebookと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を処理しようとしているため、エラーになります。
私が試している各サービスのアプリIDが含まれているかどうかを確認するためにURLをチェックすることはもっともらしいですか?したがって、URLにInstagram IDが含まれている場合はInstagramハンドラーを返し、Facebook IDが含まれている場合はFacebookハンドラーを返します。
どんな助けでも素晴らしいです、ありがとう!
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
ファイル