cocoapods 使用例子: 整合社會化分享

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰」的第15天,點選檢視活動詳情

前言

在 Bundler 和 RubyGems 的啟發下,CocoaPods 被設計成即能處理庫之間的依賴關係,又能自動下載並且配置好所需要的庫。

為了避免修改第三方庫之後,使用pod install的時候 更新了庫,採用引數--verbose --no-repo-update,只安裝新新增的庫

I cocoapods 用法

CocoaPods 可以方便地通過 RubyGems 安裝,開啟 Terminal,然後鍵入以下命令:

```bash sudo gem install cocoapods

```

1.1 Podfile:申明專案程式碼相關性

Podfile這個檔案是用來用來申明專案程式碼相關性的,正如Bundler的Gemfile,或者npm的package.json。

建立一個 Podfile:cd進入.xcodeproj檔案所在的目錄,通過命令pod init來建立一個 Podfile

```bash pod 'X', '~> 1.1'

`` [語義化版本](http://semver.org/lang/zh-CN/): 用一組簡單的規則及條件來約束版本號的配置和增長 版本格式:主版本號.次版本號.修訂號`,版本號遞增規則如下:

  1. 主版本號:當你做了不相容的 API 修改,
  2. 次版本號:當你做了向下相容的功能性新增,
  3. 修訂號:當你做了向下相容的問題修正。

    先行版本號及版本編譯資訊可以加到“主版本號.次版本號.修訂號”的後面,作為延伸。

1.2 更新本地庫

```bash pod repo update --verbose

```

在這裡插入圖片描述

只更新公開的CocoaPods/Specs.git

```powershell pod repo update master

```

1.3 只安裝新新增的庫,已更新的庫忽略

```powershell

!/bin/sh

該命令只安裝新新增的庫,已更新的庫忽略

pod install --verbose --no-repo-update

該命令只更新指定的庫,其它庫忽略

pod update 庫名 --verbose --no-repo-update

exit 0%

```

pod install安裝過程中,CocoPods 會使用遞迴來分析所有的需求,並且建立一個程式碼相關性的圖,最後將 Podfile 序列化為Podfile.lock。

CocoaPods 會建立一個新的包含之前安裝好的靜態庫 Xcode 專案,然後將它們連結成一個新的 libPods target。原有的專案將會依賴這個新的靜態庫。一個 xcworkspace 檔案會被建立,從此之後,只需要開啟這個 xcworkspace 檔案來進行專案管理開發。

反覆使用 pod install 命令,只會讓 CocoaPods 重複以上步驟,重新安裝這些庫。所以,當你需要升級它們時,請使用以下命令:pod update

1.4 只更新指定的庫,其它庫忽略

pod update 庫名 --verbose --no-repo-update 只更新指定的庫,其它庫忽略

  • 例子 ```ruby pod update JPush --verbose --repo-update

```

II 例子(整合社會化分享)

http://blog.csdn.net/u011018979/article/details/124340777

2.1 U-Share SDK 整合步驟

  1. 建立應用,獲取Appkey;

    整合友盟+ U-Share SDK之前,您首先需要到 【友盟+】官網註冊一個新應用,獲得Appkey。

  2. 手動下載U-Share SDK 整合 / 自動整合(pods、maven)請看接入指南

  3. 接入SDK:

```bash pod 'UMCommon' //必須整合,由原來的UMCCommon變為了UMCommon pod 'UMDevice' //必須整合

U-Share SDK UI模組(分享面板,建議新增)

pod 'UMShare/UI'               //由原來的UMCShare/UI變為了UMShare/UI

整合微信(完整版14.4M)

pod 'UMShare/Social/WeChat'

```

```bash

只更新指定的庫,其它庫忽略

pod update 庫名 --verbose --no-repo-update 只更新指定的庫,其它庫忽略

pod update UMCommon --verbose --repo-update

```

cocoapods 小技能:只安裝新新增的庫,已更新的庫忽略 (pod install --verbose --no-repo-update) http://blog.csdn.net/z929118967/article/details/103830017

  1. 分享設定

2.2 配置Universal link

整合完整版的微信、QQ和微博必須要配置Universal link。

微信對Universal Links配置有以下要求:

  1. Universal Links必須支援https

  2. Universal Links配置的paths不能帶query引數

    微信使用Universal Links拉起第三方App時,會在Universal Links末尾拼接路徑和引數,因此App配置的paths必須加上萬用字元/*

推薦使用友盟的U-Link,2021年6月3日起,U-Link後臺上線了Universal link免費生成及重定向功能,免去開發者自行配置。

```xml + com.apple.developer.associated-domains + + xxx.umindex.com +

```

http://developer.apple.com/documentation/uikit/inter-process_communication/allowing_apps_and_websites_to_link_to_your_content

檢查Universal link是否能夠喚起App:如不能請檢視Universal link配置方法文件,檢查能否在瀏覽器內直接訪問apple-app-site-association檔案。

Universal link配置並不是立即生效的,App第一次啟動時,iOS系統去官網下載配置的associate檔案(拉取這個時間是不可控的,最多會有兩三天的延遲)。以後除非App更新或重新安裝,否則不會在每次開啟時請求apple-app-site-association

配置Universal link:http://developer.umeng.com/docs/191212/detail/191260#h1--universal-link6

2.3 使用友盟官方生成Universal link功能

http://developer.umeng.com/docs/191212/detail/250232 在這裡插入圖片描述

  1. TeamID:蘋果開發者的標識,需要去蘋果開發者官網上檢視,登入之後,開啟Account,點選左側選單中的MemberShip,就能看到teamID了,
  2. BundleID:iOS應用的唯一標識

填寫完這兩個引數,再填寫完此頁面的其他必填引數,點選頁面下方的儲存按鈕,友盟服務端就會自動生成一個Universal link連結,並且直接填充到了輸入框中。

2.4 第三方平臺配置

分享、登入操作時顯示的應用icon、名稱和對應開放平臺設定有關,必須要建立應用的平臺為:微信、QQ、新浪、釘釘、企業微信、支付寶、Facebook、Kakao、LinkeIn、Twitter。

http://developer.umeng.com/docs/128606/detail/193651

登入微信開放平臺,填寫相關應用資訊,稽核通過後獲取到微信AppID及AppSecret,如果需要微信登入功能,需要申請微信登入許可權,注意微信登入有效期為一年,需要按時在微信平臺認證

從2020年6月1日起該舊版本SDK會被微信限制使用正常分享功能(分享時會顯示“未驗證應用”)。因此U-Share已下線微信iOS精簡版,且後續不再提供。

建議已使用微信iOS精簡版的客戶,後續使用微信iOS完整版,可以體驗更多高階功能。

III 建立自己的 CocoaPod

花幾分鐘建立一個.podspec檔案可以節省下其他開發者無數的時間。 http://blog.csdn.net/z929118967/article/details/103830544

.podspec檔案作為 CocoaPods 的一個獨立單元,包含了名稱,版本,許可證,和原始碼檔案等所有資訊。

pod trunk register [email protected] "iosre "註冊自己的電腦,使用 Trunk 服務釋出 CocoaPod:$ pod trunk push NAME.podspec

IV 常見問題

問題: CDN: trunk URL couldn't be downloaded: http://raw.githubusercontent.com/CocoaPods/Specs/master/Spec

錯誤資訊: ```objectivec CDN: trunk URL couldn't be downloaded: http://raw.githubusercontent.com/CocoaPods/Specs/master/Specs/b/b/f/PGDatePicker/2.2.0/PGDatePicker.podspec.json Response: Couldn't connect to server

```

解決方案:在pod 檔案新增

```objectivec source 'http://github.com/CocoaPods/Specs.git'

```