2016-10-18 70 views
0

我在創建本地共享對話框時遇到了一些麻煩。 我的目標是通過本地視圖控制器共享我的產品鏈接,但我無法做到。我正在嘗試測試代碼:顯示UIActivityViewController中的所有選項

NSURL *google = [NSURL URLWithString:@"http://google.com"]; 
NSArray *activityItems = @[google]; 
UIActivity *activity = [UIActivity new]; 
UIActivityViewController *activityViewControntroller = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:@[activity]]; 
activityViewControntroller.excludedActivityTypes = @[]; 
[self presentViewController:activityViewControntroller animated:true completion:nil]; 

而且我沒有獲得FB和Twitter圖標。另一方面,我可以在safari這兩個圖標中看到它,當我觸摸它時,我會看到「您需要在發佈之前配置您的帳戶」。 所以,我想要相同的行爲:所有最流行的社交網絡,如VK,FB,Twitter的圖標;像whatsapp,viber和電報的使者。如果其中一些未安裝,我希望對話框「您必須先登錄」並重定向到safari(例如用於FB)以登錄或打開appstore(例如,用於電報或viber)來安裝;否則我想用我的鏈接發佈消息。 我看到它是這樣的:從活動vc中排除所有類型,而不是強制添加我需要的所有圖標,並在手動點擊時檢查它們中的每一個。但在蘋果文檔中,我讀到「你必須使用本地行爲來代替原生項目」。那麼,它會是正確的嗎?或者還有其他方法可以解決這個問題?

+0

只有在設備上已經安裝了Facebook和Twitter的情況下才會發布。 – Nilesh

+0

但是在safari中我可以看到它,儘管它們是否已安裝它們 –

回答

0

試試這個

-(void)clickShare:(UIButton *)sender{ 
    NSArray * activityItems = @[[NSString stringWithFormat:@"Some initial text."], [NSURL URLWithString:@"http://www.google.com"]]; 
    NSArray * applicationActivities = nil; 
    NSArray * excludeActivities = @[]; 

    UIActivityViewController * activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities]; 
    activityController.excludedActivityTypes = excludeActivities; 

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

這個代碼在我的項目工作。

+0

與我的代碼有什麼不同?主要目標 - 顯示具有描述行爲的所有圖標 –

相關問題