flutter寫iOS,flutter基礎語法

Flutter工程化之iOS混編集成

在flutter官網(wǎng)上推薦了iOS項目中兩種混編方式:

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設、網(wǎng)站制作、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務汕城,十多年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792

筆者在采用兩種集成方式的過程中,因為iOS項目結構設計導致這兩種簡單的集成方式都有些麻煩,所以在實踐中更改和優(yōu)化了集成方式,使之在筆者的項目中能夠更加簡單和快速的集成。

問題:在不更改flutter tool中相關腳本的前提下,添加的Script Phase中的腳本相對路徑錯誤,如果只是開發(fā),手動更改下路徑就可以了,但是在考慮到CI中不能每次在pod install之后都去更改,所以在開發(fā)調(diào)試中采用該集成方式,結合flutter attach的方式去調(diào)試。

通過編譯相關的 xcframework + Cocoapods私有庫的集成方式在CI中集成,這樣QA的CI不需要配置flutter的相關依賴

根據(jù)flutter編譯工具的提示: 上面的編譯命令是打包flutter工程項目和插件的產(chǎn)物,在實際開發(fā)過程中可以發(fā)現(xiàn)是否引入了依賴Native的插件會導致貶義編譯產(chǎn)物的不同。

根據(jù)上面的對比:

第一部分:基礎的 Flutter Engine + Flutter App 編譯后的產(chǎn)物 Flutter.xcframwork -- Flutter引擎的包 App.xcframework -- 工程項目對應的AOT的編譯產(chǎn)物 第二部分:三方插件的注冊中心 FlutterPluginRegistrant.xcframework -- 第三方插件的注冊中心,其實是Native + iOS通信的集合 第三部分:依賴iOS Native的原生 FMDB . xcframwork path_provider_ios.xcframework sqflite.xcframework -- cached_network_image依賴的原生實現(xiàn)

根據(jù)上面的編譯產(chǎn)物可以知道Flutter和App是編譯后必有的包,后面的兩個部分完全是服務于三方插件的,到這可以解答第二個問題:筆者App的混編過程中混編插件失效是因為筆者在NativeApp中重寫了Flutter的容器,使用了FlutterEngineGroup動態(tài)創(chuàng)建多引擎去對應進入不同的功能模塊,混合插件是因為重寫過程中沒有通過GeneratedPluginRegistrant注冊插件,所以需要在Native的Flutter容器中注冊插件,使之生效。

在這為什么使用commit的hash作為flutter-libs的依賴,因為pod install的時候會有緩存,除了版本好,commit hash也能保證每次CI編譯通過 pod install 來更新flutter-libs依賴產(chǎn)物

完成?。?!

Flutter iOS 蘋果IAP(內(nèi)購)實現(xiàn)步驟及問題總結(全網(wǎng)最全)

點擊 “協(xié)議、稅務和銀行業(yè)務”

內(nèi)購用的是付費應用程序,先簽署《付費應用程序協(xié)議》,同意后狀態(tài)變更為“用戶信息待處理”,等待審核。

狀態(tài)更改完畢后,點擊“開始設置稅務、銀行業(yè)務和聯(lián)系信息”。

(1)添加銀行賬戶,按照要求填寫相關內(nèi)容即可。

(2)選擇報稅表,并填寫。所有與 Apple 有商業(yè)合作者必選都是美國,若有其他需求,可以多選。

繼續(xù)填寫,首先認證公司基本信息,選擇所有人類型,確認無誤后認證條款處打?qū)?/p>

Part I 部分,繼續(xù)核對公司相關信息,選填內(nèi)容可不填。

Part III 部分,簽署稅務條約,設置利益限制條款的種類,選填內(nèi)容可不填。此部分如果需要可勾選上下圖勾選框,不需要可不勾選,我們這個項目沒有用到part III 部分,所以沒有勾選。

Part XXX 部分,確認之前填寫的信息,勾選完畢后,提交

(3)填寫聯(lián)系信息,共5個。高級管理、財務、技術、法務、營銷。只需要提供5個人的基本信息即可。

只可使用一次的產(chǎn)品,使用之后即失效,必須再次購買。

示例: 釣魚 App 中的魚食。

只需購買一次,不會過期或隨著使用而減少的產(chǎn)品。

示例: 游戲 App 的賽道。

允許用戶在固定時間段內(nèi)購買動態(tài)內(nèi)容的產(chǎn)品。除非用戶選擇取消,否則此類訂閱會自動續(xù)期。

示例: 每月訂閱提供流媒體服務的 App。

允許用戶購買有時限性服務的產(chǎn)品。此 App 內(nèi)購買項目的內(nèi)容可以是靜態(tài)的。此類訂閱不會自動續(xù)期。

示例: 為期一年的已歸檔文章目錄訂閱。

App 內(nèi)購買項目的截屏,即所售項目的示意圖。例如,如果 App 內(nèi)購買項目是一本圖書,您可以提交圖書的截屏。您也可以提交購買頁的截屏。該截屏僅用于 Apple 審核,不會在 App Store 中顯示。

截屏要求如下:

iOS 至少需要 640 x 920 像素

Apple tvOS 需要 1920 x 1080 像素

macOS 需要 1280 x 800 像素

App 審核圖像上傳后,可以替換,但無法移除。當您的 App 內(nèi)購買項目處于審核中時,您無法更新截屏。

沙箱賬號是不能直接在App Store進行登錄的,只能在點擊了購買商品之后,在彈出的登錄框進行登錄 。

驗證是否已登錄沙箱測試賬號:

設置--iTunes Store與App Store,頁面拉到最底部,會看到沙箱賬戶項會列出你已登錄的沙箱測試賬號!

操作方法一:打開App Store應用首頁滑到最下方--選中AppleID--注銷

操作方法二:設置--iTunes Store與App Store--選中AppleID--注銷

checks if the client can make payments(檢測App是否能支付)

getAvailablePurchases

Get all non-consumed purchases 獲取未消費的商品

打印信息查詢;

原因:

沒有先執(zhí)行getProducts,直接執(zhí)行requestPurchase方法,要先拉取商品列表,再執(zhí)行購買操作.

問題描述;

1.漏單必須要處理,玩家花RMB購買的東西卻丟失了,是絕對不能容忍的。所謂的漏單就是玩家已經(jīng)正常付費,卻沒有拿到該拿的道具。

解決:只要購買成功,便將購買記錄(receipt等賬單信息)保存下來,然后將賬單信息傳送給我們游戲服務器,游戲服務器獲得賬單后,和蘋果服務器驗證,賬單有效的話,回饋給游戲服務器處理,游戲服務器處理后,返回給游戲客戶端處理,處理完畢,將本地保存的購買記錄刪除。

官方文檔:向蘋果校驗支付憑證

21000 App Store無法讀取你提供的JSON數(shù)據(jù)

21002 收據(jù)數(shù)據(jù)不符合格式

21003 收據(jù)無法被驗證

21004 你提供的共享密鑰和賬戶的共享密鑰不一致

21005 收據(jù)服務器當前不可用

21006 收據(jù)是有效的,但訂閱服務已經(jīng)過期。當收到這個信息時,解碼后的收據(jù)信息也包含在返回內(nèi)容中

21007 收據(jù)信息是測試用(sandbox),但卻被發(fā)送到產(chǎn)品環(huán)境中驗證 【請求sandbox校驗支付憑證】

21008 收據(jù)信息是產(chǎn)品環(huán)境中使用,但卻被發(fā)送到測試環(huán)境中驗證

消耗類型: 例如:金幣、道具等。

非續(xù)訂訂閱: non-renewable subscription 例如:VIP

您的首個 App 內(nèi)購買項目必須以新的 App 版本提交。請創(chuàng)建您的 App 內(nèi)購買項目,然后前往 App 的“App Store”頁,從“App 內(nèi)購買項目”中進行選擇,點按“提交”。 了解更多

在上傳二進制文件并提交首個 App 內(nèi)購買項目以供審核后,您可以使用下表提交其他 App 內(nèi)購買項目。

唐巧-iOS應用內(nèi)付費(IAP)開發(fā)步驟列表

未完~待續(xù)

當使用內(nèi)購購買過商品之后沒有把這個交易關閉,所以再次去購買商品后就會調(diào)用以前已經(jīng)購買成功的交易去購買因為已經(jīng)購買過,才會有這個提示

原因:添加內(nèi)購項目時,信息填寫不完整,app審核圖像未上傳

處理方法:上傳app審核圖片( 合適的尺寸 ),點擊提交,狀態(tài)改為正在準備審核中。

這個是內(nèi)購選擇類型不匹配原因?qū)е隆?/p>

購買成功之后,Apple會返回以下四個數(shù)據(jù)給應用

Reference

Review the updated Paid Applications Schedule.

游客身份解決方案:即不登錄也要能購買

1)服務器端做一個蘋果審核機制,審核期間游客身份可以進行一切行為,一旦審核通過,修改服務端即可達到強制用戶登錄進行內(nèi)購買的目的(這個有點。。。)

2)游客可以進行內(nèi)購買,購買時以設備UUID為準,生成一個游客賬號,將購買信息保存在服務器和本地,當用戶登錄正式賬戶后判斷此設備是否進行過內(nèi)購,有的話提示用戶將游客身份購買的權益與現(xiàn)有賬號綁定,如果綁定,游客權益則遷移到正式賬戶,如果不遷移,則游客身份和正是賬戶是兩個獨立賬戶,正式賬戶不享有游客身份的權益(我用的這個)

內(nèi)購游客模式解決方案

iOS內(nèi)購規(guī)則

ios flutter 混編

最近在集成flutter進項目

以收集編譯產(chǎn)物并以cocopods方式集成

產(chǎn)物大概放入兩個pod庫

這個暫且叫pod1,pod1放flutter.framework,第三方plugin.a,自己寫的基礎plugin,比如networking,hud等等(由于是混編,不可避免存在很多原生基礎組件,所以能公用的基礎組件都會弄一個flutter-plugin橋接)

第二個pod2放編譯之后的app.framwork,注冊文件GeneratedPluginRegistrant,以及各個業(yè)務模塊.a(有可能沒有)結構大概如下面

podspec大概如下

主工程引入這兩個pod庫即可

接下來從零開始搭建上文所說的

先創(chuàng)建一個flutter module

這個是主flutter工程,用來集成businessModule以及生成app.framework

結構如下圖

再生成一個業(yè)務工程

注意此時還需要進入example生成ios和Android工程,不然無法單獨編譯運行

這樣 這個單獨的業(yè)務模塊就可以單獨跑起來了

此時主flutter工程和業(yè)務工程均搭建完畢

在主工程pubspec.ymal文件講兩個工程關聯(lián)

好了 接下來就是編寫腳本收集產(chǎn)物了

編譯完成之后會在flutter主工程product生成如下文件

將上面文件分類收集做成文章開頭的pod1,pod2 ,在native工程引入即可

在集成flutter的過程中 踩不少坑 也閱讀很多前輩的文章,在此一并感謝

新建一個flutter項目,可以在ios上運行,四步搞定!

1. 建立一個flutter項目的命令

2. 在ios文件夾下,生成pods文件夾

3. Xcode環(huán)境簽名設置;

把錯誤的版本刪除再添加,可解決簽名錯誤問題;必須先刪除再添加,直接修改可能不起作用。團隊開發(fā),必須使用團隊的簽名。

4.運行創(chuàng)建的flutter項目;

選擇真機、模擬機,點擊運行按鈕,或使用命令運行:

下面兩步是贈送的:

5.新加一款插件,所涉及的命令;

ios 端所涉及的命令

6. 剛更新的插件和已有的插件有沖突怎么辦?

可以試一試以下步驟:

iOS與Flutter混合開發(fā)

在現(xiàn)有iOS項目中導入Flutter, 需要在Podfile文件中加入

flutter_application_path = '/Users/../flutter_app_module'

load File.join(flutter_application_path,'.ios','Flutter','podhelper.rb')

并對target添加:

install_flutter_engine_pod

install_all_flutter_pods(flutter_application_path)

從上我們可以看到導入Flutter需要依賴Flutter項目中的'.ios'文件夾下的'podhelper.rb'文件,所以在pod install之前,請確認.ios文件夾存在

也許你一開始存在這個文件,但是在執(zhí)行flutter clean之后,這個文件不見了,不用驚慌, .ios文件夾基本可以通過以下幾種方式生成,自行選擇:

1.?flutter run

2. flutter pub get

3. flutter create .

.ios文件夾生成之后,回到原生項目pod install即可。

友情提示:

在生成.ios的時候,項目中不要存在其他的內(nèi)層項目(如下截圖),那可能會導致你無法生成.ios或者生成的.ios不包含podhelper.rb這個文件,而最終導致你pod install失敗。

愉快的開始coding......

本文標題:flutter寫iOS,flutter基礎語法
URL分享:http://muchs.cn/article4/phieoe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、營銷型網(wǎng)站建設網(wǎng)站建設、企業(yè)網(wǎng)站制作、品牌網(wǎng)站設計網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設