分享SDK解析

SDK的技術

最近公司開始新項目,我的工作就是完成社交分享這一部分功能。原本我是去各個開發(fā)者平臺下載SDK然后查看Demo然后開始寫功能的,可是老大要求不要用SDK,因為SDK有些時候太大了不太適合。于是我就硬著頭皮去研究...好在已經(jīng)有人這么干過了而且也寫出了一個框架-----OpenShare。可是我們的項目是用swift寫的而OpenShare是用oc寫的,雖然說swift和oc混寫是沒有關系的但是感覺還是不舒服于是就開始仔細看了OpenShare并且自己寫了一些Demo,終于還是有點收獲的。下面就進入正題。

其實要實現(xiàn)像SDK提供一樣的功能有主要的兩點需要解決:

  1. app之間的轉(zhuǎn)跳
  2. app之間的數(shù)據(jù)傳輸

下面就對這兩點分開解釋:

app之間轉(zhuǎn)跳


相信很多人都知道怎么在應用中打開網(wǎng)頁鏈接,就是用UIApplication.shareApplication().openURL(url)。其實在應用之間打開也是使用URL的,只是每個應用的url不同。比如QQ的url是"mqqapi://" , 微信的url是"weixin://" 等,那么這些url是怎么定義的呢?答案是這些url是定義在項目的info.plist中的URL type 中 URL Scheme 的如圖定義了readtext為url

infoplist.png

這樣別的應用可以用readtext://的url來轉(zhuǎn)跳到這個應用當然在URL Scheme下面可以有很多個URL 當然iOS也提供了UIApplication.sharedApplication().canOpenURL(url)來測試是否可以打開一個url,也就是說可以用這個來測試是否安裝了某個應用。

既然是url那么就一定可以帶參數(shù)的比如"mqqapi://share/to_fri?thirdAppDisplayName=Demo"而QQ等這些應用也正是這樣解析傳進來的url,當使用url打開一個app的時候在appDelegate中的application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)的參數(shù)option中可以拿到需要的url,因為option是一個字典。這樣就可以解析url知道需要做什么事情。

app之間數(shù)據(jù)傳輸


在上一部分的url打開app的技術中當然可以通過在url后面寫入?yún)?shù)然后在app中解析來達到數(shù)據(jù)的傳輸,但是url中的數(shù)據(jù)傳輸也是很小量的數(shù)據(jù)可以這么做,比如申請到得appid等

那么想要實現(xiàn)大一點的數(shù)據(jù)傳輸怎么辦呢?大家在使用iPhone的時候是否有注意到你在一個應用里面所復制的東西可以在另一個應用里面黏貼出來。這就是答案,SDK就是應用了黏貼板實現(xiàn)了app間的數(shù)據(jù)傳輸。我們可以將圖片等數(shù)據(jù)寫入黏貼板然后再另一個app內(nèi)通過對黏貼板的讀取對圖片進行分享。

當然在iOS中黏貼板類UIPasteboard向開發(fā)者提供了相關的讀寫的接口其中UIPasteboard.generalPasteboard().setData(data, forPasteboardType: key)方法是向黏貼板中寫入data并且以key作為標志,這樣就可以防止各個應用之間的數(shù)據(jù)的錯誤問題。所以在SDK中是有已經(jīng)約定好的key。

以上就是我的一些小小的分享,希望大家多多的提意見!寫的不好。

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

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

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