2013-05-15 1 views
3

UIActivityViewController을 내 앱에 구현했으며 문자열과 이미지를 성공적으로 공유 할 수 있습니다. 그러나 iOS 사진 앱에서 이미지를 공유하면 내 앱에 표시되지 않는 서비스가 있음을 알았습니다. 즉, 인쇄, 바탕 화면으로 사용 및 담당자 지정, 사진 스트림. 내 응용 프로그램은 Mail, Message, Facebook, Twitter 및 Copy를 사용할 수 있습니다.내 앱에서 특정 UIActivityViewController 서비스가 누락되었습니다.

나는 생각하고 그 중 하나를

1)이 추가 서비스가 UIActivityItemProvider, UIActivityItemSource 등을 사용하여 사진 응용 프로그램 내에서 사용자 정의 서비스로 구현되었다 ..

2) 나는 데이터 제공하는 서비스가 올바른 형식이 아닙니다.

설명서를 몇 번 읽었지만 그것에 대해 아무 것도 보이지 않습니다.

편집 : 요청에 따라 코드 표시 :

#define SM_SHARE_IMAGE_AND_STRING 1 

-(void)actionToolbarViewControllerUserTappedShareButton:(SMActionToolbarViewController*)sender{ 
    // Reposition anchor view for UIPopoverController to point at 
    [self repositionAnchorViewToButtonFrame:self.actionToolbarViewController.shareButtonFrame]; 

    // Asynch download of image 
    [SMUtility downloadAsset:self.selectedAsset completion:^(UIImage *image) { 
     // Create image source 
     SMActivitySource *activityImageSource = [[SMActivitySource alloc]initWithImage:image]; 
#if defined(SM_SHARE_IMAGE_AND_STRING) 
     // Create string source 
     NSString *assetsString = [SMUtility assetsString:[NSArray arrayWithObject:self.selectedAsset]]; 
     SMActivitySource *activityStringSource = [[SMActivitySource alloc]initWithString:assetsString]; 

     // Present UIActiviyViewController within an UIPopoverController 
     NSArray *items = [@[activityImageSource, activityStringSource]mutableCopy]; 
#else 
     NSArray *items = [@[activityImageSource]mutableCopy]; 
#endif 

     UIActivityViewController *activityViewController = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil]; 
     [activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed){ 
      [SMMixPanel eventSharePhotoMethod:@"Share"]; 
     }]; 
     self.buttonPopoverController = [[UIPopoverController alloc] initWithContentViewController:activityViewController]; 
     [self.buttonPopoverController presentPopoverFromRect:self.anchorView.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    }]; 
} 
+1

'UIActivityViewController'를 만드는 데 사용하는 코드를 보여줍니다. – rog

답변

4
  1. 인쇄 및 연락처에 할당 활동은 당신이 적절한 데이터를 제공으로 UIActivityViewController으로 표시 표준 활동이다.
  2. 연락처에 지정 활동에 UIImage을 제공해야합니다. UIActivityTypeAssignToContact에 대한 문서를 참조하십시오. 허용되는 항목에 대한 자세한 내용은 UIActivityTypePrint에 대한 문서를 참조하십시오.

"배경으로 사용"은 사진 응용 프로그램에만 표시되는 사용자 지정 활동 인 것으로 보입니다.

+0

그 정보를 제공해 주셔서 감사합니다. 나는'UIActivityTypeAssignToContact','UIActivityTypeSaveToCameraRoll' 및'UIActivityTypePrint'에 대한 문서를 읽고 있습니다.이 문서는 모두 UIImage를 사용할 수 있다고 말합니다. 'UIActivityTypePrint'는 특별히 로컬 이미지 여야한다고 말하지만 다른 두 이미지는 그렇지 않습니다. UIImage 만 사용하도록 위 코드를 수정했습니다. 이메일을 눌러 테스트 해보니 실제로 이미지라는 것을 알았습니다. 그러나 연락처에 추가 또는 카메라 롤 저장에 대한 서비스 아이콘이 표시되지 않습니다. 이유에 대한 단서? 이 문서는 실제로 추가적인 것을 말하지 않습니다. – VaporwareWolf

+0

또한 [SMUtility downloadAsset]을 수정하여 이미지를 디스크에 쓴 다음 로컬 저장소에서 새 UIImage를 만든 다음 해당 UIImage를 블록에 전달합니다. 같은 결과. – VaporwareWolf

+0

'SMActivitySource'가 구현 된 방법을 모른 채 문제가 무엇인지 알 수있는 방법이 없습니다. 왜 간단한'UIImage'를 포함하는 배열을'initWithActivityItems :'메소드에 전달하지 않겠습니까? 또한이 모든 UI 코드가 주 스레드에서 수행되고 있는지 확인하십시오. – rmaddy