【Unity】手機(jī)系統(tǒng)原生分享(ios、Android)

寫在前面

最近接了很多SDK,大多都是搬磚的事,也沒有太多事。今天剛剛把原生分享寫了。還是不太習(xí)慣寫ios的代碼,奇奇怪怪的。原理啥的其實(shí)也很簡(jiǎn)單,分別說(shuō)說(shuō)唄。


ios分享
Android分享

安卓

安卓分享分為兩大類:文字、文件。這里面并沒有鏈接圖文啥的,像微信分享圖文鏈接。猜測(cè)微信那種圖文分享應(yīng)該是微信這個(gè)用原生分享出去的特殊格式的文字與文件再生成的。也有可能有,但是我沒找到。
分享的代碼很簡(jiǎn)單,如下:

//分享純文字
public void ShareText(String content) {
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_TEXT, content);
    Intent chooserIntent = Intent.createChooser(intent, "share to:");
    this.activity.startActivity(chooserIntent);
}

這里推薦看看安卓官網(wǎng)文檔寫的很是詳細(xì)。分享文件的話就是把setType換一個(gè)即可。簡(jiǎn)單說(shuō)就是分享文件就是把文件轉(zhuǎn)換成二進(jìn)制流傳輸。

有哪些可以分享的文件類型我們可以選擇如何編寫,推薦看看這一篇文章很是詳細(xì)。

還有我們可以篩選平臺(tái),分享到指定平臺(tái)。可以看看這一篇文章。這個(gè)功能我并沒有做,他說(shuō)的非常的詳細(xì)。

這里我在做分享圖片的時(shí)候,遇到一個(gè)問(wèn)題就是我們把圖片放在unity工程中StreamingAssets目錄下。這個(gè)就算是放在沙盒文件下了吧。但是打包到安卓下他其實(shí)并沒有在安卓的沙盒文件下,解壓apk,圖片的確是沒有被壓縮。但是你用www訪問(wèn)也是沒有的。我這里還是重新生成的圖片才會(huì)到沙盒路徑。

如果我們不想重新生成圖片的話,有個(gè)解決方案:我們可以把圖片讀出文件的bytes然后再把bytes轉(zhuǎn)成64位字符串。這樣把這個(gè)字符串存起來(lái)然后用的時(shí)候再把它轉(zhuǎn)回去即可。

參考資料:
https://developer.android.com/training/sharing/
http://www.itdecent.cn/p/88f166dd43b7
https://blog.csdn.net/wjr1949/article/details/71024068
http://www.itdecent.cn/p/1d4bd2c5ef69

蘋果

蘋果可以分享鏈接文件,不得不吐槽,確實(shí)不太會(huì)寫ios,感覺很麻煩。雖然我們不需要想安卓那樣導(dǎo)jar包。

微信分享鏈接

代碼看起很奇怪,其實(shí)原理也很簡(jiǎn)單,就是調(diào)用api即可,把我需要分享的內(nèi)容壓進(jìn)去即可。代碼如下:

-(void) share: (NSString*) body withURL: (NSString*) urlString withImage:(NSString*) imageDataString withSubject: (NSString*) subject {
    
    NSMutableArray *sharingItems = [NSMutableArray new];
    NSArray *activityItems=
    if (body && body.length > 0) {
        [sharingItems addObject:body];
    }
    if (imageDataString && imageDataString.length > 0) {
        NSData *imageData = [[NSData alloc] initWithBase64EncodedString:imageDataString options:0];
        UIImage *image = [[UIImage alloc] initWithData:imageData];
        
        [sharingItems addImage:image];
    }
    if (urlString && urlString.length > 0) {
        [sharingItems addURL:urlString];
    }
    
    UIActivityViewController *activityViewController = [[UIActivityViewController alloc]                                                                initWithActivityItems:sharingItems applicationActivities:nil];
    activityViewController.popoverPresentationController.sourceView = UnityGetGLViewController().view;
    activityViewController.popoverPresentationController.sourceRect = CGRectMake(UnityGetGLViewController().view.frame.size.width/2, UnityGetGLViewController().view.frame.size.height/4, 0, 0);
    
    if(subject && subject.length > 0)
    {
        [activityViewController setValue:subject forKey:@"subject"];
    }
    
    [UnityGetGLViewController() presentViewController:activityViewController animated:YES completion:nil];        
}

每個(gè)平臺(tái)都會(huì)有一些小小的不同差異分享出去的東西,比如說(shuō)qq分享出去的圖文鏈接,它會(huì)根據(jù)你的網(wǎng)頁(yè)重新加載你的圖文簡(jiǎn)介與圖片。

當(dāng)然ios也是可以篩選平臺(tái)指定分享,可以看看這篇文章
記得加MessageUI的庫(kù)。
參考資料:
http://www.itdecent.cn/p/c2fb41c5c14e
https://blog.csdn.net/qq_28009573/article/details/77744001
http://www.itdecent.cn/p/a6b288093b29
https://blog.csdn.net/FlyingKuiKui/article/details/77650289

小結(jié)

說(shuō)的也不多,大多都是讓大家去看別人寫的東西,畢竟我做著兩個(gè)也是個(gè)半吊子,基本不太懂,都是搬磚。萬(wàn)一給大家傳播了錯(cuò)誤的思想就不好了。下面是下載鏈接,推薦下載unity package,如果你想看看安卓工程可以看看GitHub。
github
unity package

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 九、大人者不失其赤子之心 欣賞和創(chuàng)造這兩件事是相輔相成的,可以說(shuō)是同時(shí)完成的。而創(chuàng)造之中都寓有欣賞,但是創(chuàng)...
    鄧潔兒閱讀 798評(píng)論 0 1
  • I had a gloomy story but had not liquor to share with you...
    RolandCapet閱讀 296評(píng)論 0 0
  • 今天早早的起床和兒子去過(guò)六一兒童節(jié),心里滿滿的激動(dòng),從昨天下午去給裝飾教室,看出兒子很期待我能陪他過(guò)。到了教室,同...
    一定更好閱讀 140評(píng)論 0 0

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