2016-04-01 15 views
7

Wenn ich Apples UIActivityViewController verwenden, um ein paar Bilder zu WeChat (Weixin) zu teilen. Ich finde, dass es manchmal nicht funktioniert. Die meiste Zeit funktioniert es gut, wenn ich nur 1 ~ 3 Bilder wähle, aber wenn ich 9 Bilder teile (größte erlaubte Anzahl von WeChat), wird es sicherlich fehlschlagen, und die Konsole wird druckenUIActivityViewController, um Bilder zu WeChat nicht funktionieren

2016-04- 01 16: 14: 34,258 EverPhoto [5567: 1.981.394] Plugin com.tencent.xin.sharetimeline 2016.04.01 unterbrochen 16: 14: 34,258 EverPhoto [5567: 1.981.394] Plugin com.tencent.xin.sharetimeline entwertet

Hier

ist der Code:

__weak typeof(self) __weakSelf = self; 
self.activityViewController = [[UIActivityViewController alloc] initWithActivityItems:self.shareItems applicationActivities:nil]; 
self.activityViewController.excludedActivityTypes = @[UIActivityTypePostToFacebook, 
            UIActivityTypePostToTwitter, 
            UIActivityTypePostToVimeo, 
            UIActivityTypePostToTencentWeibo, 
            UIActivityTypePrint, 
            UIActivityTypeCopyToPasteboard, 
            UIActivityTypeAssignToContact, 
            UIActivityTypeSaveToCameraRoll, 
            UIActivityTypeAddToReadingList, 
            UIActivityTypePostToFlickr, 
            ]; 
self.activityViewController.completionWithItemsHandler = ^(NSString * __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){ 
    DLog(@"shareCompleted : %@", completed ? @"YES" : @"NO") 
    __weakSelf.shareItems = nil; 
    __weakSelf.activityViewController = nil; 
}; 

[self.containerVc presentViewController:self.activityViewController animated:YES completion:nil]; 

ShareItems ist das benutzerdefinierte Objekt, das das Protokoll UIActivityItemSource implementiert.

P.S. Ich habe APP Google Photo ausprobiert und festgestellt, dass es in seiner Share-Funktion sehr gut funktioniert. Es kann 9 Bilder mit sogar der ursprünglichen HD-Größe des Systemfotos teilen, das WeChat unter Verwendung UIActivityViewController behauptet. Also, wie soll ich dieses Problem lösen?

Antwort

5

Die Share-Erweiterung von WeChat ist aufgrund des Speicherlimits der App-Erweiterung beendet.
Laut Apples App Extension Programming Guide: Optimieren Sie Effizienz und Leistung

Speichergrenzen für App-Erweiterungen ausgeführt sind deutlich niedriger als die Speichergrenzen für einen Vordergrund App auferlegt. Auf beiden Plattformen kann das System Erweiterungen extensiv beenden, da Benutzer in der Host-App zu ihrem Hauptziel zurückkehren möchten. Einige Erweiterungen haben möglicherweise niedrigere Speichergrenzen als andere: Widgets müssen beispielsweise besonders effizient sein, da Benutzer wahrscheinlich mehrere Widgets gleichzeitig geöffnet haben.

1.Ich erstellt 9 sehr kleine Bilder, und gemeinsam mit WeChat erfolgreich:

- (UIImage *)imageWithColor:(UIColor *)color 
{ 
    CGRect rect = CGRectMake(0, 0, 1, 1); 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetFillColorWithColor(context, [color CGColor]); 
    CGContextFillRect(context, rect); 

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return image; 
}  

2.You Ihre Bilder, um sie mit WeChat, hier einige Scale methods

+1

Das OP erwähnt, dass die Google Photo App HD-Bilder teilen kann. Was ist der Grund dafür? – Suragch

0

teilen, bevor skalieren Ich habe das gleiche Problem. @ Wj2061's Antwort ist richtig, aber nicht die Lösung. Ich denke, dass Sie ShareItem mit UIImage gesetzt haben. Wenn Sie das fileUrl des Images haben, stellen Sie es auf shareItem ein. Wenn nicht, speichern Sie das UIImage zuerst in der Datei. in Ihrer shareItem-Klasse, geben Sie die DateiUrl zurück.

- (nullable id)activityViewController:(UIActivityViewController*)activityViewController itemForActivityType:(NSString *)activityType{ 
    return _filePathUrl; 
} 

Es ist Arbeit für mich.

+0

Wenn jemand eine falsche Lösung gepostet hat, bitte markieren Sie diese. – techydesigner

Verwandte Themen