關於移動遊戲SDK,你想了解的都在這裡

可以叫我才哥 發表於 2021-04-02
大家好,今天我們介紹一下手遊SDK相關的知識,雖然SDK接入更多的工作內容是技術與技術之間的對接溝通,但是作為遊戲運營或相關從業者,多多少少了解一些SDK基礎,對於在協調對接的過程中也會變得更加高效、遊刃有餘!

目錄:

1. 認識什麼是SDK

2. SDK包含的功能
2.1 賬號註冊登入
2.2 支付
2.3 防沉迷
2.4 資料上報

3. SDK接入前的準備

3.1 簡單的引數獲取流程
3.2 包名
3.3 簽名
3.4 版本號

其他

關於MD5值
關於檔名
關於Appid

1. 認識什麼是SDK

SDK全稱Software Development Kit,也就是軟體開發工具包,它是一些被軟體工程師用於為特定的軟體包、軟體框架、硬體平臺、作業系統等建立應用軟體的開發工具的集合。

——百度百科

當然,以上解釋對於非技術的我們來說,還是稍微顯得有點抽象。那麼通俗來講,SDK就是手遊渠道(如應用寶、小米應用商店、華為應用商店等)提供的整合了賬號註冊登入、充值、防沉迷、遊戲公告、分享、社群入口、push訊息、資料上報、禮包或折扣券等功能的一個集合。

作為遊戲開發者,辛辛苦苦開發完遊戲本身的玩法功能後,如果沒有這樣的SDK,那麼勢必要自己再去開發一個賬號註冊登入功能,再去支付寶和微信支付申請支付介面開發一套支付系統,再去研究防沉迷規則開發一套防沉迷系統等等。

但是,現在有了這樣的SDK,作為遊戲開發者來說便只需要接入這個SDK,然後做好相關功能介面的聯調即可,至於賬號註冊登入的底層邏輯和資料儲存、不同第三方支付渠道的引數申請及接入等等都不需要去考慮,畢竟這些工作SDK已經完成了。

2. SDK包含的功能

上面我們在介紹什麼是SDK的時候其實提到了SDK主要包含的一些功能,對於不同的手遊渠道來說,它們所支援的功能不盡相同。比如應用寶因為是騰訊旗下產品,可能整合了QQ和微信的分享功能,但是其他手遊渠道SDK就未必會包含該功能。。

對於SDK不包含的功能,如果涉及到第三方的服務(比如實時語音),可以協調平臺SDK部門的同事進行功能新增或者自己申請第三方服務的相關引數直接去接第三方的功能SDK。

不過,基本上像賬號註冊登入、支付、防沉迷和資料上報可能都是SDK必備的功能點。

2.1 賬號註冊登入

一般來說,每個手遊渠道都有自己的賬號體系,玩家使用該渠道的賬號登入從該渠道下載的遊戲應用。

這個賬號多數情況對遊戲開發者來說是不可見的,往往會以openid或類似的形式開放給開發者,通過這個openid欄位開發者可以查詢到玩家在遊戲裡的角色資訊,而渠道方則可以通過該欄位查詢到玩家的賬號資訊。

關於移動遊戲SDK,你想了解的都在這裡
簡單的賬號註冊登入流程

2.2 支付

一般來說,對於手遊渠道而已,支付渠道有支付寶支付、微信支付等,對於蘋果裝置來說就是蘋果支付了。

還有一些其他常見的支付渠道:各渠道自己的錢包支付、雲閃付、 QQ錢包、話費卡支付、話費支付等等。

關於移動遊戲SDK,你想了解的都在這裡
小米渠道支付方式

2.3 防沉迷

關於防沉迷系統其實包含以下幾個部分:實名認證、未成年時長防沉迷和未成年人支付防沉迷。

我們國家在對遊戲的監管上越來越完備,2021年2月24日,中宣部出版局線上召開了“網路遊戲防沉迷實名認證系統企業接入培訓會”。其中提到,2021年5月31日前,所有遊戲企業需完成在運營遊戲的防沉迷系統的接入工作;6月1日起,未接入防沉迷系統運營遊戲要停止運營。

國家出臺了統一的遊戲防沉迷實名認證系統 ,所有遊戲產品均需要接入。而各渠道已經開始針對性進行相關功能完善,並將整合在最新版本的SDK中。

例如小米渠道:

關於移動遊戲SDK,你想了解的都在這裡
小米渠道SDK防沉迷合規功能

2.4 資料上報

資料上報是指將玩家在遊戲中的行為資料上報並用於資料後臺進行資料視覺化報表展示,便於產品運營人員進行產品運營動作規劃等。

我們基於SDK必帶的賬號註冊登入及支付功能,可以知道像賬號維度的註冊、登入和支付相關資料是可以採集到的。寬泛的來說,就是渠道一定知道這個產品基於使用者賬號維度下的 每天有多少新增使用者、活躍使用者、活躍使用者活躍時長和留存等活躍項資料,以及他們的付費相關資料。

如果,還想知道其他更詳細的使用者行為資料,就需要額外進行有關資料埋點及上報接入,而這一般來說可能開發者肯定會做但是不一定會上報給渠道。

所以,對於渠道而言,他們知道一款產品的曝光量、點選量、下載量、安裝量、賬號註冊量、活躍賬號數以及付費數,可以看到這些基本面之間的轉化,然後進行相關優化(如廣告位調整、素材優化、賬號註冊流程優化、渠道側的充值折扣活動等等)。

對於開發者而言,他們更多的資料是使用者在體驗產品本身時的行為資料,各個新手流程後使用者數、不同系統玩法參與情況、商城道具銷售情況、活動效果等等,從而進行新手流程優化、系統玩法調整、遊戲商業化設計迭代、活動規劃等等。

以下是某個埋點需求:

關於移動遊戲SDK,你想了解的都在這裡
案例:道具操作埋點

3. SDK接入前的準備

到這裡,我們已經多多少少對SDK有所瞭解了,那麼在接入SDK之前我們需要準備什麼呢?

其實,SDK接入這件事情屬於技術們的活,畢竟這是技術對接嘛。但是在SDK接入的時候,有很多前置引數需要用到,這些引數放在SDK裡就可以告訴渠道這個應用是誰。

3.1 簡單的引數獲取流程

一般來說,在渠道的開發者後臺直接點選建立遊戲應用,填寫自己的遊戲包名和應用名稱就可進行遊戲建立然後獲取對應引數。(注意:這裡的包名建立之後就不能改變了)

關於移動遊戲SDK,你想了解的都在這裡
建立遊戲應用並獲取接入引數

這裡有兩個概念:包名和應用名稱。有時候,部分渠道在建立遊戲應用獲取有關功能時需要用到更多別的前置資訊如 簽名等,具體我們往下看。

關於應用名稱,其實就是你的這個應用叫啥,比如《王者榮耀》手遊的應用名稱叫“王者榮耀”。

3.2 包名

關於包名,包名英文名稱Package Name。

  • 基於Android標準的原則
  • 安卓系統中以包名作為應用的唯一標識,也就是包名必須是唯一的,一個包名就代表一個應用
  • 包名主要用於系統識別應用,使用者其實是無感的
  • 同一個包名的apk無法在手機系統中同時存在,後安裝的會覆蓋之前安裝的同包名的應用
  • 此外,對於在渠道釋出的應用,如果修改了包名則舊版本使用者無法收到渠道應用商店的更新提醒(當然一般這種情況下你的安裝包也無法上傳過審)

一般來說,各家手遊渠道都有自己的apk包名命名規則,比如騰訊的是com.tencent.tmgp.xxxx,小米的是com.xx.mi。

日常工作中,因為包名可能出現的問題:

比如我們有兩個包名的版本,一個是測試服一個是正式服的,那麼他們其實就各有一套引數。如果,程式在打正式服的apk的時候用了測試服的引數,那麼就會出現一些SDK功能無法使用的情況;同理,用正式服的引數給了測試服的apk使用亦然。

3.3 簽名

簽名一詞來源於生活中常用的術語,還記得刷信用卡會要求客戶簽名嗎?這個簽名的作用是確認這筆消費是本人經手的。計算機中所說的簽名和生活中所說的簽名在本質上是一樣的,它所起到的作用也是一致的!為App簽名的本質是說明這個App是我開發的,不是別人。用官方的話說,就是在應用和開發者之間建立可信任的關聯。

簽名的作用

  • 這個應用的apk,作者知道是不是他開發的(比如有人弄一個同名apk整非法玩意,反過來誣告y開發者,y開發者解包說簽名和我們簽名不一樣,你這是誣陷!)
  • 如果有人惡意修改應用apk,重新打包,簽名就會不一致
  • 當我們提交新的apk版本時候,填寫簽名對比可以用來驗證是不是開發者的提交行為

一般來說,簽名是打包的程式或者測試操作的,如果想知道簽名資訊,可以直接找他們瞭解即可。至於怎麼確定簽名內容和將簽名打進包裡,這些就不是我們需要去了解的了,完全屬於技術範疇!

日常工作中,關於簽名我們可能會遇到的問題:

因為某些SDK功能在申請的時候需求填寫簽名資訊,這些功能在實際使用的時候也是會校驗該簽名資訊的,如果發現簽名資訊不一致,則該功能會無法使用。

比如QQ和微信登入功能,在申請QQ和微信相關引數的時候就需要用到簽名,簽名不一致在選擇QQ或微信登入的時候會提示“簽名不一致”的錯誤提示而無法正常使用。

關於移動遊戲SDK,你想了解的都在這裡
遊戲簽名

3.4 版本號

我們在渠道開發者後臺提交新版本的時候,一般都會被要求填寫版本號相關資訊,當然也有的渠道後臺能自動識別上傳的apk包的版本號。那麼版本號到底是什麼呢?

Google為APK定義了兩個屬性:VersionCode和VersionName,他們有不同的用途。

  • VersionCode:對使用者不可見,僅用於應用市場、程式內部識別版本,判斷新舊等用途
  • VersionName:展示給使用者,消費者會通過它認知自己安裝的版本,下文提到的版本號都是說VersionName

比如,某應用商店裡可以見的某遊戲的版本號資訊:

關於移動遊戲SDK,你想了解的都在這裡
和平精英VersionName版本號

從屬性上看,使用者能看到的版本號VersionName其實對於版本是否需要更新之類的沒有任何影響,真正影響到版本更新的是VersionCode。

如果你不確定版本號是多少,還是找之前負責打包的同學就行了。至於為什麼打成這個數值,你自然也是不用去管的。

那麼,關於版本號我們可能遇到的問題

  • 同一個版本號(VersionName),對應了多個VersionCode 的情況

比如釋出了一個版本號為1.0.0.0的版本,然後發現出現了個小bug,但是需要換整包更新解決。然後開發者只是將VersionCode增加了,版本號沒有變化。類似這樣的情況,一般來說在渠道後臺可能無法提交新的apk包,大多數後臺會提示需要上傳版本號更高的版本。這種情況,要麼和渠道協商溝通特殊處理,要麼就是將版本號一併進行增加。(如果將同版本號但是不同VersionCode)的apk包傳到應用商店,可能會出現應用商店提示使用者更新,但是使用者自己感受上是已經是最新的版本號但是被要求更新到同一個版本號的情況)。

當我們釋出一個更高版本號的版本後,出現BUG導致被要求回退版本的情況

首先需要明確一點:VersionCode的增加是不可逆的,也就更新後的版本無法回滾到舊的版本。這種情況 最好就是儘快解決bug,然後釋出新的版本。

其他

我們在版本管理過程中可能還會遇到一些其他的概念,比如MD5和檔名等等。

關於MD5值

MD5資訊摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼雜湊函式,可以產生出一個128位(16位元組)的雜湊值(hash value),用於確保資訊傳輸完整一致。

——百度百科

咳咳,百科介紹,感覺我還是不明白,太抽象了(其實是介紹用的一系列名稱我都不懂)。

簡單來說,MD5是每個檔案都有的一個字串,它的作用就是判斷這個檔案是不是原檔案。

比如,才哥通過郵件發給你一個檔案A,同時用md5工具在本地獲取了檔案A的md5值也一併給你了;然後你收到郵件下載檔案A到你的本地,接著用md5工具獲取其md5值,發現是和才哥給你的md5值一樣,那麼檔案A無誤,反之,則你下載到本地的檔案不是檔案A。

在日常工作中,可能有一些需要上傳apk檔案的地方會涉及到同時填寫md5值做校驗的情況。

關於檔案的md5值大家可以用Notepad++ 選單欄中 工具—>md5—>從檔案生成 來獲取檔案的md5值。

關於移動遊戲SDK,你想了解的都在這裡
獲取MD5值方式舉例

關於檔名

檔名就是字面意思,檔案的名稱。

檔名可以自由重新命名,它不影響什麼。不過,在自己作業系統的同目錄下不能出現同名檔案哈。

關於移動遊戲SDK,你想了解的都在這裡
重新命名檔名

關於Appid

這個嘛,就是你在建立遊戲應用的時候獲取的引數,不再贅述。

以上就是本次全部內容,主要關於遊戲sdk的一些簡單科普,以及一些我們在不同的開發者後臺進行引數申請時的一些apk自身引數的意義介紹,希望能帶給大家幫助!


來源:可以叫我才哥
原文:https://mp.weixin.qq.com/s/cCMJ_XJPEfD-EquLCNCz5Q