2015-04-21 15 views
23

Paylaşımı göstermek için UIActivityViewController kullanıyorum. Posta uygulamasını seçtiğimde listedeki konu ve gövde doğru şekilde ayarlandı ve Gmail uygulamasında olduğu gibi boş bırakıldı.UIActivityViewController Gmail Konu ve gövde boş bırakılıyor mu?

- (void)shareAVideoWithSubject:(NSString*)subject Link:(NSString *)string onViewController:(UIViewController *)viewController fromView:(UIView *)view { 

    _activityViewController = 
    [[UIActivityViewController alloc] initWithActivityItems:@[string] 
             applicationActivities:nil]; 
    _activityViewController.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypeAddToReadingList, UIActivityTypeAirDrop]; 
    [_activityViewController setValue:subject forKey:@"subject"]; 


    UIWindow *window = [[[UIApplication sharedApplication] delegate]window]; 

    //if iPhone 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
    { 
     if(!viewController){ 
      viewController = ((SWRevealViewController*)window.rootViewController).presentedViewController; 
     } 
     [viewController presentViewController:_activityViewController 
            animated:YES 
            completion:nil]; 

    } 
    //if iPad 
    else 
    { 
     // Change Rect to position Popover 
     popup = [[UIPopoverController alloc] initWithContentViewController:_activityViewController]; 
     UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:view]; 
     [popup presentPopoverFromBarButtonItem:barButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    } 
} 

Ben StackOverflow'daki iki soru aşağıda kontrol ettirin. onlar yerine ben iOS tüm paylaşılabilir uygulamaları gösteren istiyorum, listede yeni bir etkinlik eklemek için

Bu

  • UIActivityViewController not showing body text in gmail

    UIActivityViewController not showing body text in gmail

    1. soruma cevap verilmez. Bu durumda Gmail paylaşım gövdesi boş gidiyor.

      Şimdiden teşekkürler. Gmail window open with empty subject and body. Cropped the image because of company policy can show the email address

    +0

    Daha fazla detay verebilir misiniz? Etkinlik görünümü bir gmail sekmesini gösterir? –

    +0

    Merhaba Ashraf, Evet etkinlik sekmesi UIActivityViewController'da gösteriliyor ve buna dokunarak Gmail posta penceresi boş konu ve gövde ile açılır. Mümkünse ekran görüntüleri ekleyecektir. –

    +0

    Bunun nedeni, Gmail'in konu için farklı bir anahtar kullanması olabilir. Gmail paylaşımının diğer uygulamalarda çalışıp çalışmadığını kontrol edebilir misiniz? – Gasim

    cevap

    12

    [_activityViewController setValue:subject forKey:@"subject"];UIActivityViewController showing Gmail app to share

    e-postanın konusunu ayarlamak için belgesiz yolu mu ekleme ekran görüntüleri,.
    Gövde ve konuyu ayarlamak için doğru yol (iOS 7.0 ve üstü) - paylaşmak için öğeye UIActivityItemSource protokolünü uygulayın.

    // EmailItemProvider.h 
    @interface EmailItemProvider : NSObject <UIActivityItemSource> 
    @property (nonatomic, strong) NSString *subject; 
    @property (nonatomic, strong) NSString *body; 
    @end 
    
    // EmailItemProvider.m 
    #import "EmailItemProvider.h" 
    
    @implementation EmailItemProvider 
    
    - (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController { 
        return _body; 
    } 
    
    - (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType { 
        return _body; 
    } 
    
    - (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType { 
        return _subject; 
    } 
    @end 
    

    Ve mevcut olmadığı kadar:

    EmailItemProvider *emailItem = [EmailItemProvider new]; 
    emailItem.subject = @"Subject"; 
    emailItem.body = @"Body"; 
    
    UIActivityViewController *activityViewController = 
    [[UIActivityViewController alloc] initWithActivityItems:@[emailItem] 
                applicationActivities:nil]; 
    [self presentViewController:activityViewController animated:YES completion:nil]; 
    

    Bu vücut ve posta uygulamasında konuyu ayarlanır, ancak Gmail uygulaması konu göz ardı eder ve vücuda eşit olarak ayarlayın gibi görünüyor olacaktır. Önemli

    Mail.appGmail

    : Gmail uygulamasına bir hata var gibi görünüyor. & karakterini geçmek, mesaj konusunu ve gövdenin boş olmasını sağlar. Bunun yerine &amp; kullanın. Diğer özel karakterler test edilmez.

    +0

    Cevabınız için teşekkür ederiz. Gmail gövdesinin benim için boş olmasının nedeni URL’yi paylaşıyorum. Ve ben NSString ve NSUrl her ikisi de benim durumumda başarısız oldu gibi paylaşmaya çalıştım. –

    +0

    Yukarıdaki örnek kodda url dizesini beden içinde paylaşabilirsiniz. –

    +0

    Teşekkürler @Sergey Benim url sorgumda soruna neden olan '&' sembolünü içerir. Sadece referans için "http://www.host.com/path/query?name=XYZ&age=14" Yani sorgu bileşeni adı ve yaşı '&' ile ayrılmış çünkü boşa gidiyor. Bu karakteri değiştir/çıkar. –

    -2

    UIActivityViewController * activityViewController = [[UIActivityViewController alloc] initWithActivityItems: @ [@ "Vücudunuz Paylaşılacak dize"] applicationActivities: nil];

    [activityViewController setValue: @ "E-posta Konunuz" forKey: @ "subject"];

    activityViewController.completionHandler =^(NSString * activityType, BOOL işlemi tamamlandı) { // ... };