iOS 系統(tǒng)分享彈出不支持此類(lèi)型

場(chǎng)景:

我需要在我的應(yīng)用內(nèi)置一個(gè)分享的功能,方便用戶分享給他們的好友,以便產(chǎn)品增長(zhǎng)自然量。

問(wèn)題

我設(shè)置完成之后分享的時(shí)候分享給微信,其中的圖片始終出不來(lái),我起初以為是圖片比較大加載不出來(lái)的問(wèn)題。后面看到別的應(yīng)用能夠分享圖片,但是僅僅是分享圖片,那我也想分享圖片。后面單獨(dú)設(shè)置圖片后,出現(xiàn)了彈出不支持此類(lèi)型的對(duì)話框

解決

設(shè)置分享的時(shí)候,加入item的時(shí)候有問(wèn)題。

代碼如下:

+ (void)customShareWithShareText:(NSString *)shareText shareImage:(UIImage *)shareImage shareUrl:(NSString *)shareUrlStr{
    // 1、設(shè)置分享的內(nèi)容,并將內(nèi)容添加到數(shù)組中
    NSMutableArray *tempArrayM = [NSMutableArray array];
    if (shareText.length) {
        [tempArrayM addObject:shareText];
    }
    NSData *imageData = nil;
    if (shareImage) {
        imageData = UIImagePNGRepresentation(shareImage);
        [tempArrayM addObject:imageData];
    }
    NSURL *shareUrl = nil;
    if (shareUrlStr.length) {
        shareUrl = [NSURL URLWithString:shareUrlStr];
        [tempArrayM addObject:shareUrl];
    }
    NSArray *items = tempArrayM.copy;
    
    if (items.count == 0) {
        return;
    }
    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
    if (@available(iOS 11.0, *)) {//UIActivityTypeMarkupAsPDF是在iOS 11.0 之后才有的
        activityVC.excludedActivityTypes = @[UIActivityTypeMessage,UIActivityTypeMail,UIActivityTypeOpenInIBooks,UIActivityTypeMarkupAsPDF];
    } else if (@available(iOS 9.0, *)) {//UIActivityTypeOpenInIBooks是在iOS 9.0 之后才有的
        activityVC.excludedActivityTypes = @[UIActivityTypeMessage,UIActivityTypeMail,UIActivityTypeOpenInIBooks];
    }else {
        activityVC.excludedActivityTypes = @[UIActivityTypeMessage,UIActivityTypeMail];
    }
    activityVC.completionWithItemsHandler = ^(UIActivityType  _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
        if (completed) {
            NSLog(@"%@",@"分享成功");
        }else {
            NSLog(@"%@",@"分享失敗");
        }
    };
    //這兒一定要做iPhone與iPad的判斷,因?yàn)檫@兒只有iPhone可以present,iPad需pop,所以這兒actVC.popoverPresentationController.sourceView = self.view;在iPad下必須有,不然iPad會(huì)crash,self.view你可以換成任何view,你可以理解為彈出的窗需要找個(gè)依托。
    UIViewController *vc = [KODUtilService KOD_getTopViewController];
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        activityVC.popoverPresentationController.sourceView = vc.view;
        [vc presentViewController:activityVC animated:YES completion:nil];
    } else {
        [vc presentViewController:activityVC animated:YES completion:nil];
    }
}

看代碼發(fā)現(xiàn),其實(shí)我剛開(kāi)始設(shè)置的時(shí)候,直接傳的是UIimage類(lèi)型,而不是把圖片轉(zhuǎn)成二進(jìn)制即NSData類(lèi)型,轉(zhuǎn)完之后就沒(méi)問(wèn)題了。

NSData *mageData = UIImagePNGRepresentation(shareImage);

PS: 順便說(shuō)一下在iPad上是需要pop出來(lái)的,多一行代碼即:

activityVC.popoverPresentationController.sourceView = vc.view;

希望大家使用系統(tǒng)分享成功,以上~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,673評(píng)論 1 32
  • 前面的文章講了幼兒園“去小學(xué)化”的問(wèn)題,現(xiàn)在說(shuō)說(shuō)如何為孩子選擇一所幼兒園。在以前的時(shí)候,這個(gè)興許都不是什么問(wèn)題,不...
    皇甫胤和閱讀 402評(píng)論 2 5
  • 五顏六色的房子,每個(gè)都在講述著一個(gè)與眾不同的故事。故事的主人公在外奔波?還是在炕頭嘮家常? 大片大片的土地,終于可...
    young敏閱讀 85評(píng)論 0 0
  • 最近的心情好像越來(lái)越煩躁,是忙碌的工作還是,老公孩子的接連生病導(dǎo)致的疲憊狀態(tài),或許是疲憊的我無(wú)人述說(shuō),無(wú)人解壓,接...
    家庭保姆閱讀 159評(píng)論 0 0
  • 送餃子歸途中,這支熟悉的旋律――《掌聲響起來(lái)》不知從何處飄然入耳,忍不住停下來(lái)聆聽(tīng),雖然它的傳唱已由來(lái)已久,可這次...
    似水流年1982閱讀 1,365評(píng)論 0 1

友情鏈接更多精彩內(nèi)容