2015-07-01 2 views
0

Я использую SDK для Facebook на iOS (цель-c), чтобы поделиться имиджем на Facebook. Вот код, который я использую:Общий доступ к facebook sdk 4.0 + iOS

-(IBAction)facebookShare:(UIButton *)sender { 
FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init]; 
photo.image = self.image; 
photo.userGenerated = YES; 
FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init]; 
content.photos = @[photo]; 
[FBSDKShareDialog showFromViewController:self withContent:content delegate:self]; 
} 

Где изображение является UIImage, что я установил, выбирая его из галереи пользователя. Когда я пытаюсь нажать свою кнопку (с этим IBAction), приложение вылетает с этой ошибкой:

1 июл 10:50:23 .local pkd [917]: ошибка получения прав на pid 922 1 июл 10:50: 23 - [MainViewController sharer: didFailWithError:]: непризнанный селектор отправлен в экземпляр 0x7fd70940efd0 1 июля 10:50:23: *** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: '- [MainViewController sharer: didFailWithError:]: непризнанный селектор отправляется например 0x7fd70940efd0'

вот новая ошибка после фиксации кода таким образом

FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init]; 
     photo.image = //YOUR IMAGE                 photo.userGenerated = YES; 
     FBSDKSharePhotoContent * photoContent = [[FBSDKSharePhotoContent alloc] init]; 
     photoContent.photos = @[photo]; 
     FBSDKShareDialog *shareDialog = [[FBSDKShareDialog alloc] init]; 
     shareDialog.shareContent = photoContent; 
     shareDialog.delegate = (id)self; 
     shareDialog.fromViewController = self; 
     NSError * error = nil; 
     BOOL validation = [shareDialog validateWithError:&error]; 
     if (validation) { 
      [shareDialog show]; 
     } 

:

ул 1 15:55:02 .local DailyPic [1169]: libMobileGestalt MobileGestalt.c: 1025: Не удалось получить данные региона 1 июля 15:55:06 com.apple.CoreSimulator.SimDevice.D482DFDD -3051-4759-B70D-94EC93BFF5D0.launchd_sim [471] (com.apple.imfoundation.IMRemoteURLConnectionAgent): Ключ _DirtyJetsamMemoryLimit недоступен на этой платформе. 1 июл 15:55:07 o.local pkd [498]: ошибка получения прав для pid 1169 июль 1 15:55:07 local Dailypic [1169]: Ошибка домена = com.facebook.sdk.share Code = 2 " Операция не может быть завершена. (Com.facebook.sdk.share error 2.) «UserInfo = 0x7ffc8a59bcd0 {com.facebook.sdk: FBSDKErrorArgumentValueKey =, com.facebook.sdk: FBSDKErrorDeveloperMessageKey = Диалоги обхода фида поддерживают FBSDKShareLinkContent., Com .facebook.sdk: FBSDKErrorArgumentNameKey = shareContent} 1 июль 15:55:10 местный securityd [499]: SecTaskCopyAccessGroups Никакой группы доступа брелки указан в то время как работает в тренажере, падая обратно по умолчанию не установлено

Наконец решена с использованием другого эмулятора.

+0

Делегирование метод 'Sharer: didFailWithError:' 'из FBSDKShareDialog' не реализован. – Larme

ответ

5

В ранней версии FB SDK произошла ошибка, но здесь кажется, что вам не хватает требуемой реализации методов делегата.

 FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init]; 
     photo.image = //YOUR IMAGE                 photo.userGenerated = YES; 
     FBSDKSharePhotoContent * photoContent = [[FBSDKSharePhotoContent alloc] init]; 
     photoContent.photos = @[photo]; 
     FBSDKShareDialog *shareDialog = [[FBSDKShareDialog alloc] init]; 
     shareDialog.shareContent = photoContent; 
     shareDialog.delegate = (id)self; 
     shareDialog.fromViewController = self; 
     NSError * error = nil; 
     BOOL validation = [shareDialog validateWithError:&error]; 
     if (validation) { 
      [shareDialog show]; 
     } 

и реализовать необходимый метод ДЕЛЕГАТЫ

- (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults:(NSDictionary *)results { 
    // handle 
} 
- (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error{ 
    // handle 
} 
- (void)sharerDidCancel:(id<FBSDKSharing>)sharer{ 
    // handle 
} 
+0

Результаты контента как незаявленный идентификатор, а для: путь правильно добавляет _image? – Spidersaw

+0

Отредактирован ответ – Andrea

+0

Хорошо, теперь код кажется хорошим, но когда я пытаюсь его запустить, я не могу получить свой диалог и если я «заставляю» [shareDialog show]; приложение вылетает – Spidersaw

Смежные вопросы