老早就使用了。可是如今才寫,惰性太大,如今改
如今做產品的話相信大家基本都做分享吧。一個是項目的需求須要,另一個是能夠非常好的宣傳自己的產品。其它的優點依據情況而論
事實上每一個平台都有它自己的文檔,可是假設做產品趕進度的話。或者說一些不可控的因素的話,而使用到sharedsdk的話。那我簡單說一下
首先,來看一下sharedsdk的官網:http://mob.com/#/index
假設要使用的話須要去注冊,博主這里注冊了,再在這說一下,假設是公司的話。須要用公司的帳號加入應用,由於涉及到后台的統計
這個是基本的三個,並且分享的jar包里面已經集成了第三方登陸了,來說一下詳細使用,肯定是要先去對應的地址下東西,嘿嘿
這個有sdk和demo,還有集成文檔,我感覺大家能夠不用下demo的。直接下載sdk然后看集成文檔,基本就能搞定,博主原來用的時候事實上有bug的,有個類里面的引用不正確,可是集成文檔版本號比較老,如今好了,文檔說的非常具體
這個sdk下載下載是.tar.gz格式的,博主用360壓縮死活打不開,每次都是。並且博主還是每次都用好壓。由於下載360直接推薦下了好多軟件。打不開的話首先就得想怎么打開,事實上去掉.gz就能夠了,可是這事實上不應該是結束,應該想一下為什么,事實上這個壓縮包在mac里面是能夠打開的,主要是博主一直用的windows,其它的沒用寫過代碼,這種話大家應該能夠理解了吧。事實上兼容問題
好下載下來看看是什么東西
依據名字的話應該是一個client一個是服務端。服務端博主沒有細致研究過,說一下android端。
大家可能會發現。jar包。唉,又默認成壓縮包了,事實上應該用java se打開的,然后勾選須要的平台
這里的項目包名能夠去清單文件中面獲取,必需要相應,然后項目名稱能夠自定義下。確定后相應的文件,以及文件路徑都會生成在那個jar包的根文件夾下
剩下的便是新建對應的文件夾。然后把對應的包放進去,博主用的as,這里着重說一下須要注意的。eclipse貌似問題要少點
就是這個assets是在這個路徑下的。再有就是假設集成短信功能的話還須要一個lib文件夾和eclipse不一樣,jnilibs應該和java放在同一個文件夾下
還有就是as編譯比較嚴格。里面有些關於百度貼吧的編譯是通只是的。所有注掉。另一個文件須要干掉,不然編譯也是會出錯的,再有就是沒有英文命名的string,不是做國際化的須要加上一行代碼。進行強制編譯
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
eclipse貌似不會提示錯誤,可是as必須加上再有就是關於刷新的話,有些命名是反復的,須要注掉
<string name="app_name">laugh</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="title_activity_main">MainActivity</string> <!-- <string name="pull_to_refresh">下拉刷新</string> --> <!-- <string name="release_to_refresh">釋放馬上刷新</string> --> <!-- <string name="refreshing">正在刷新...</string> --> <string name="refresh_succeed">刷新成功</string> <string name="refresh_fail">刷新失敗</string> <string name="pullup_to_load">上拉載入很多其它</string> <string name="release_to_load">釋放馬上載入</string>
這樣編譯的話能夠全然ok了,然后看一下ShareSDK.xml里面是什么東西
<?xml version="1.0" encoding="utf-8"?> <DevInfor> <!-- 說明: 1、表格中的第一項 <ShareSDK AppKey="api20" /> 是必須的。當中的AppKey是您在ShareSDK上注冊的開發人員帳號的AppKey 2、全部集成到您項目的平台都應該為其在表格中填寫相相應的開發人員信息。以新浪微博為例: <SinaWeibo Id="1" SortId="1" AppKey="568898243" AppSecret="38a4f8204cc784f81f9f0daaf31e02e3" RedirectUrl="http://www.mob.com" Enable="true" /> 當中的SortId是此平台在分享列表中的位置,由開發人員自行定義,能夠是不論什么整型數字,數值越大 越靠后AppKey、AppSecret和RedirectUrl是您在新浪微博上注冊開發人員信息和應用后得到的信息 Id是一個保留的識別符,整型,ShareSDK不使用此字段,供您在自己的項目中當作平台的識別符。 Enable字段表示此平台是否有效。布爾值。默覺得true,假設Enable為false,即便平台的jar包 已經加入到應用中,平台實例依舊不可獲取。各個平台注冊應用信息的地址例如以下: 新浪微博 http://open.weibo.com 騰訊微博 http://dev.t.qq.com QQ空間 http://connect.qq.com/intro/login/ 微信好友 http://open.weixin.qq.com Facebook https://developers.facebook.com Twitter https://dev.twitter.com 人人網 http://dev.renren.com 開心網 http://open.kaixin001.com 搜狐微博 http://open.t.sohu.com 網易微博 http://open.t.163.com 豆瓣 http://developers.douban.com 有道雲筆記 http://note.youdao.com/open/developguide.html#app 印象筆記 https://dev.evernote.com/ Linkedin https://developer.linkedin.com FourSquare https://developer.foursquare.com/ 搜狐隨身看 https://open.sohu.com/ Flickr http://www.flickr.com/services/ Pinterest http://developers.pinterest.com/ Tumblr http://www.tumblr.com/developers Dropbox https://www.dropbox.com/developers Instagram http://instagram.com/developer# VKontakte http://vk.com/dev 易信好友 http://open.yixin.im/ 明道 http://open.mingdao.com/ Line http://media.line.me/zh-hant/ Pocket http://getpocket.com/developer/apps/new --> <ShareSDK AppKey = "androidv1101"/> <!-- 改動成你在sharesdk后台注冊的應用的appkey"--> <!-- ShareByAppClient標識是否使用微博client分享,默認是false --> <SinaWeibo Id="1" SortId="1" AppKey="568898243" AppSecret="38a4f8204cc784f81f9f0daaf31e02e3" RedirectUrl="http://www.sharesdk.cn" ShareByAppClient="false" Enable="true" /> <TencentWeibo Id="2" SortId="2" AppKey="801307650" AppSecret="ae36f4ee3946e1cbb98d6965b0b2ff5c" RedirectUri="http://sharesdk.cn" Enable="true" /> <!-- ShareByAppClient標識是否使用微博client分享。默認是false --> <QZone Id="3" SortId="3" AppId="100371282" AppKey="aed9b0303e3ed1e27bae87c33761161d" ShareByAppClient="false" Enable="true" /> <!-- Wechat微信和WechatMoments微信朋友圈的appid是一樣的。 注意:開發人員不能用我們這兩個平台的appid,否則分享不了 微信測試的時候,微信測試須要先簽名打包出apk, sample測試微信,要先簽名打包,keystore在sample項目中。password123456 BypassApproval是繞過審核的標記,設置為true后AppId將被忽略,故不經過 審核的應用也能夠運行分享,可是僅限於分享文字和圖片,不能分享其它類型, 默認值為false。
此外。微信收藏不支持此字段。 --> <Wechat Id="4" SortId="4" AppId="wx4868b35061f87885" AppSecret="64020361b8ec4c99936c0e3999a9f249" BypassApproval="false" Enable="true" /> <WechatMoments Id="5" SortId="5" AppId="wx4868b35061f87885" AppSecret="64020361b8ec4c99936c0e3999a9f249" BypassApproval="false" Enable="true" /> <WechatFavorite Id="6" SortId="6" AppId="wx4868b35061f87885" AppSecret="64020361b8ec4c99936c0e3999a9f249" Enable="true" /> <!-- ShareByAppClient標識是否使用微博client分享。默認是false --> <QQ Id="7" SortId="7" AppId="100371282" AppKey="aed9b0303e3ed1e27bae87c33761161d" ShareByAppClient="true" Enable="true" /> <Facebook Id="8" SortId="8" ConsumerKey="107704292745179" ConsumerSecret="38053202e1a5fe26c80c753071f0b573" RedirectUrl="http://mob.com" Enable="true" /> <Twitter Id="9" SortId="9" ConsumerKey="LRBM0H75rWrU9gNHvlEAA2aOy" ConsumerSecret="gbeWsZvA9ELJSdoBzJ5oLKX0TU09UOwrzdGfo9Tg7DjyGuMe8G" CallbackUrl="http://mob.com" Enable="true" /> <Renren Id="10" SortId="10" AppId="226427" ApiKey="fc5b8aed373c4c27a05b712acba0f8c3" SecretKey="f29df781abdd4f49beca5a2194676ca4" Enable="true" /> <KaiXin Id="11" SortId="11" AppKey="358443394194887cee81ff5890870c7c" AppSecret="da32179d859c016169f66d90b6db2a23" RedirectUri="http://www.sharesdk.cn" Enable="true" /> <Email Id="12" SortId="12" Enable="true" /> <ShortMessage Id="13" SortId="13" Enable="true" /> <Douban Id="16" SortId="16" ApiKey="031a96a3aa8b28af094fc3eaffa17a0d" Secret="2e675e730571b75d" RedirectUri="http://mob.com" Enable="true" /> <YouDao Id="17" SortId="17" HostType="product" ConsumerKey="dcde25dca105bcc36884ed4534dab940" ConsumerSecret="d98217b4020e7f1874263795f44838fe" RedirectUri="http://www.sharesdk.cn/" Enable="true" /> <SohuSuishenkan Id="18" SortId="18" AppKey="e16680a815134504b746c86e08a19db0" AppSecret="b8eec53707c3976efc91614dd16ef81c" RedirectUri="http://sharesdk.cn" Enable="true" /> <!-- 在中國大陸,印象筆記有兩個server。一個是沙箱(sandbox),一個是生產server(china)。
一般你注冊應用,它會先讓你使用sandbox,當你完畢測試以后,能夠到 http://dev.yinxiang.com/support/上激活你的ConsumerKey,激活成功后。改動HostType 為china就好了。至於假設您申請的是國際版的印象筆記(Evernote)。則其生產server類型為 “product”。 假設目標設備上已經安裝了印象筆記client,ShareSDK同意應用調用本地API來完畢分享。但 是須要將應用信息中的“ShareByAppClient”設置為true,此字段默認值為false。 --> <Evernote Id="19" SortId="19" HostType="sandbox" ConsumerKey="sharesdk-7807" ConsumerSecret="d05bf86993836004" ShareByAppClient="false" Enable="true" /> <LinkedIn Id="20" SortId="20" ApiKey="ejo5ibkye3vo" SecretKey="cC7B2jpxITqPLZ5M" RedirectUrl="http://sharesdk.cn" Enable="true" /> <GooglePlus Id="21" SortId="21" Enable="true" /> <FourSquare Id="22" SortId="22" ClientID="G0ZI20FM30SJAJTX2RIBGD05QV1NE2KVIM2SPXML2XUJNXEU" ClientSecret="3XHQNSMMHIFBYOLWEPONNV4DOTCDBQH0AEMVGCBG0MZ32XNU" RedirectUrl="http://www.sharesdk.cn" Enable="true" /> <Pinterest Id="23" SortId="23" ClientId="1432928" Enable="true" /> <Flickr Id="24" SortId="24" ApiKey="33d833ee6b6fca49943363282dd313dd" ApiSecret="3a2c5b42a8fbb8bb" RedirectUri="http://www.sharesdk.cn" Enable="true" /> <Tumblr Id="25" SortId="25" OAuthConsumerKey="2QUXqO9fcgGdtGG1FcvML6ZunIQzAEL8xY6hIaxdJnDti2DYwM" SecretKey="3Rt0sPFj7u2g39mEVB3IBpOzKnM3JnTtxX2bao2JKk4VV1gtNo" CallbackUrl="http://sharesdk.cn" Enable="true" /> <Dropbox Id="26" SortId="26" AppKey="i5vw2mex1zcgjcj" AppSecret="3i9xifsgb4omr0s" RedirectUri="https://www.sharesdk.cn" Enable="true" /> <VKontakte Id="27" SortId="27" ApplicationId="3921561" Enable="true" /> <Instagram Id="28" SortId="28" ClientId="ff68e3216b4f4f989121aa1c2962d058" ClientSecret="1b2e82f110264869b3505c3fe34e31a1" RedirectUri="http://sharesdk.cn" Enable="true" /> <!-- Yixin易信和YixinMoments易信朋友圈的appid是一樣的; 注意:開發人員不能用我們這兩個平台的appid,否則分享不了 易信測試的時候須要先簽名打包出apk, sample測試易信,要先簽名打包,keystore在sample項目中,password123456 BypassApproval是繞過審核的標記,設置為true后AppId將被忽略,故不經過 審核的應用也能夠運行分享,可是僅限於分享文字或圖片,不能分享其它類型。 默認值為false。
--> <Yixin Id="29" SortId="29" AppId="yx0d9a9f9088ea44d78680f3274da1765f" BypassApproval="true" Enable="true" /> <YixinMoments Id="30" SortId="30" AppId="yx0d9a9f9088ea44d78680f3274da1765f" BypassApproval="true" Enable="true" /> <Mingdao Id="31" SortId="31" AppKey="EEEE9578D1D431D3215D8C21BF5357E3" AppSecret="5EDE59F37B3EFA8F65EEFB9976A4E933" RedirectUri="http://sharesdk.cn" Enable="true" /> <Line Id="32" SortId="32" Enable="true" /> <KakaoTalk Id="33" SortId="33" AppKey="48d3f524e4a636b08d81b3ceb50f1003" Enable="true" /> <KakaoStory Id="34" SortId="34" AppKey="48d3f524e4a636b08d81b3ceb50f1003" Enable="true" /> <WhatsApp Id="35" SortId="35" Enable="true" /> <Bluetooth Id="36" SortId="36" Enable="true" /> <Pocket Id="37" SortId="37" ConsumerKey="32741-389c565043c49947ba7edf05" Enable="true" /> <Instapaper Id="38" SortId="38" ConsumerKey="4rDJORmcOcSAZL1YpqGHRI605xUvrLbOhkJ07yO0wWrYrc61FA" ConsumerSecret="GNr1GespOQbrm8nvd7rlUsyRQsIo3boIbMguAl9gfpdL0aKZWe" Enable="true" /> <FacebookMessenger Id="39" SortId="39" ConsumerKey="107704292745179" ConsumerSecret="38053202e1a5fe26c80c753071f0b573" RedirectUrl="http://mob.com" Enable="true" /> </DevInfor>
里面都是自帶的,我大致說一下是什么,對應的key是須要公司依據對應的簽名去審核獲取,分享的話QQ空間,微信朋友圈用他的測試即可,假設是分享給QQ群,個人,微信個人是會打上對應的標的,用過就知道了,假設涉及到這些keyi在公布前一定要用自己的進行測試。公布要公布自己的應用。這里略微說一下第三方授權登錄。就是假設申請的對應的key和你的應用簽名不一樣的話肯定是上不了的,打包的時候一定要打release包,不要打debug包。debug是沒有簽名的,最好用實體機進行測試,再來就是該基本的了。怎么調用分享代碼
protected void showShare() { ShareSDK.initSDK(getActivity()); OnekeyShare oks = new OnekeyShare(); //關閉sso授權 oks.disableSSOWhenAuthorize(); // 分享時Notification的圖標和文字 2.5.9以后的版本號不調用此方法 //oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name)); // title標題,印象筆記、郵箱、信息、微信、人人網和QQ空間使用 oks.setTitle(getString(R.string.share)); // titleUrl是標題的網絡鏈接,僅在人人網和QQ空間使用 oks.setTitleUrl("http://sharesdk.cn"); // text是分享文本,全部平台都須要這個字段 oks.setText("我是分享文本"); // imagePath是圖片的本地路徑,Linked-In以外的平台都支持此參數 oks.setImagePath("/sdcard/test.jpg");//確保SDcard以下存在此張圖片 // url僅在微信(包含好友和朋友圈)中使用 oks.setUrl("http://sharesdk.cn"); // comment是我對這條分享的評論,僅在人人網和QQ空間使用 oks.setComment("我是測試評論文本"); // site是分享此內容的站點名稱,僅在QQ空間使用 oks.setSite(getString(R.string.app_name)); // siteUrl是分享此內容的站點地址,僅在QQ空間使用 oks.setSiteUrl("http://sharesdk.cn"); // 啟動分享GUI oks.show(getActivity()); }
這個是在fragment里面調用的,activity一類的(actionbaractivity,FragmentActivity)換成this就能夠了。事實上以上的一些set方法都是經常使用的,另一些能夠點出來
好多東西等着你去發掘,嘿嘿,就簡介到這里了,基本全部分享功能都能使用了,第三方授權稍后再說
----------------------------------------------------------切割線---------------------------------------------------------------------------------------------------------------------------
這里也有一個問題。非常現實。但是也非常困擾人。就是關於集成的問題,有人說怎么什么都想着集成啊,但是能夠考慮一下,讓你一個人兩個月開發一款app,那么這些工具類的東西,難道每次都去查對應的官方api去自己寫?換句話說,我相信有些厲害的程序猿肯定會自己封裝了一個底層框架吧,或者把框架里面的東西都單出來,然后存到github上,用什么就下載來copy改改,不可能每次都去查api再去一點一點寫吧,尤其不是核心的代碼,僅僅是工具而已,我是這樣覺得,個人觀點