2015-11-05 77 views
0

因此,我只是在應用程序內部做了一個基本的Facebook分享,它在我的設備(iPhone 6 OS 9.1和iPad air 9.02)上正常工作,但不起作用在我的同事iPad Air 2 8.4.1或iPhone 6 Plus 9.1上。任何人都有任何線索,爲什麼會這樣?iOS上的Facebook共享在某些設備上可用,但不適用於其他設備

他們在設備設置中登錄Facebook。他們也安裝了facebook應用程序(我沒有應用程序,只是通過設置登錄)

下面是我的設備屏幕截圖,顯示要共享的消息,其他設備只顯示圖像並且沒有文本。

enter image description here

下面是我使用的共享

- (void)shareTapped { 
    UIImage *image = self.pictureView.image; 

    NSString *postText = [NSString stringWithFormat:@"%@\n*%@\n%@\n%@, %@ %@", self.event.shortDescription, self.event.eventCode, self.event.address, self.event.city, self.event.state, self.event.zip]; 
    [[UtilitiesObject sharedInstance] shareMessage:postText image:image parentVC:self]; 
} 

- (void)shareMessage:(NSString *)msg image:(UIImage *)image parentVC:(UIViewController *)parentVC { 
    NSArray *activityItems = @[msg]; 
    if (image) { 
     activityItems = @[msg, image]; 
    } 

    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 

    // Tailor the list of services displayed 
    activityController.excludedActivityTypes = @[UIActivityTypeAssignToContact, 
              //UIActivityTypePostToFacebook, 
              //UIActivityTypePostToTwitter, 
              //UIActivityTypeMail, 
              UIActivityTypeMessage, 
              UIActivityTypeSaveToCameraRoll, 
              UIActivityTypePrint, 
              UIActivityTypePostToWeibo, 
              UIActivityTypeCopyToPasteboard]; 

    activityController.popoverPresentationController.sourceView = parentVC.view; 

     [activityController setCompletionWithItemsHandler: 
^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) { 
     if ([activityType isEqualToString: UIActivityTypeMail]) { 
      NSLog(@"Mail"); 
     } 
     if ([activityType isEqualToString:UIActivityTypePostToFacebook]) { 
      NSLog(@"Facebook"); 
     } 
     if ([activityType isEqualToString:UIActivityTypePostToTwitter]) { 
      NSLog(@"Twitter"); 
     } 
    }]; 

    [parentVC presentViewController:activityController animated:YES completion:nil]; 
} 

回答

0

Facebook的平臺政策不允許應用程序預填信息欄的代碼。在這種情況下,因爲您沒有Facebook應用程序,所以它使用Apple的分享表,該分享表允許預填充,但不符合FB的平臺政策。在你的朋友的情況下,他們可能會看到Facebook應用程序的共享擴展,這正確地執行了策略,並且不允許預先填充。

+0

我看,很有意思。謝謝。 – linuxer

+0

如果我使用官方的Facebook API呢? – linuxer

+0

我不太清楚你的官方Facebook API是什麼意思。如果您的意思是Graph API,並且您擁有publish_actions權限,那麼您可以指定消息字段。但是,您必須允許用戶鍵入該消息,而不是預先填寫該消息。 –

相關問題