摘要:交代背景我是個人開發者然后我的需要制作端我的用戶要求出蘋果版然后我的學得渣所以只有學學了然而很遺憾的是國內沒有任何一家廣告聯盟出了所以不得不收集資料搞一波顯示原生技術交底搜索了下需要使用到的插件機制所以請自行熟悉下效果圖上實現由于我是用
1.交代背景我是個人開發者, 然后我的app需要制作ios端, 我的用戶要求出蘋果版, 然后我的swift學得渣, 所以只有學學flutter了. 然而很遺憾的是國內沒有任何一家廣告聯盟出了flutter SDK. 所以不得不收集資料搞一波flutter顯示原生View.
2.技術交底搜索了下, 需要使用到Flutter的插件機制, 所以請自行熟悉下UiKitView, MethodChannel, PlatformView.
3.效果圖4.ios上實現
由于我是用的swift, 廣點通的sdk是oc寫得, 需要把用到的類寫在橋接文件里面
//Runner-Bridging-Header.h
#import "GeneratedPluginRegistrant.h"
#import "GDTNativeExpressAdView.h"
#import "GDTMobBannerView.h"
#import "GDTMobInterstitial.h"
#import "GDTNativeExpressAd.h"
#import "GDTNativeAd.h"
#import "GDTSplashAd.h"
#import "GDTSDKConfig.h"
#import "GDTUnifiedBannerView.h"
在AppDelegate.swift中使用
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate{
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]);let controller = window);if !hasPlugin("BannerPlugin") && controller != nil {
//注冊插件
BannerPlugin.registerWithRegistrar(registar: registrar(forPlugin: "BannerPlugin"), controller: controller!)
}
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
BannerPlugin.swift
import Foundation
class BannerPlugin {
static func registerWithRegistrar(registar: FlutterPluginRegistrar, controller: UIViewController){
registar.register(BannerViewFactory(controller: controller), withId: "banner");
}
}
BannerViewFactory.swift
import Foundation
class BannerViewFactory : NSObject, FlutterPlatformViewFactory {
let controller: UIViewController
init(controller: UIViewController) {
self.controller = controller
}
public func create(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any);return Banner(withFrame:frame, viewId: viewId, args: args, controller: controller)
}
func createArgsCodec() -> FlutterMessageCodec & NSObjectProtocol {
return FlutterStandardMessageCodec.sharedInstance()
}
}
Banner.swift
import Foundation
class Banner : NSObject, FlutterPlatformView, GDTUnifiedBannerViewDelegate{
let viewId:Int64
let args: NSDictionary
let withFrame:CGRect
let controller: UIViewController
init(withFrame: CGRect, viewId: Int64, args: Any);let banner = GDTUnifiedBannerView.init(frame: withFrame,
appId: args.object(forKey: "appid") as! String,
placementId: args.object(forKey: "posId") as! String,
viewController: controller)
banner.delegate = self
banner.loadAdAndShow()
return banner;
}
func unifiedBannerViewFailed(toLoad unifiedBannerView: GDTUnifiedBannerView, error: Error) {
print(error)
}
}
在flutter里面調用很簡單.
UiKitView(
viewType: "banner",
creationParams: {"appid": "1105344611", "posId": "1080958885885321"},
creationParamsCodec: const StandardMessageCodec(),
onPlatformViewCreated: (id) {
print(id);
},
),
height: 64,
主要是UiKitView的使用, banner是IOS那邊注冊的viewID. 這篇文章是為了記錄我在學習flutter添加banner廣告的過程. 不喜勿噴, 謝謝 過程很簡單, 就沒有詳細去講述原理了. 直接上代碼, 簡單粗暴.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/7074.html
摘要:判斷為白名單,則直接調用,返回格式圖片反之,則顯示原圖。處理處理,是美團云為美團主站提供的處理方式。目前,可用替換路徑的方式來處理。處理實際上效果也是不錯的,美團頁面里以上的圖片都是懶加載的,基本上都可以滿足需求。 本人是一名前端開發者,在公司負責目前負責信息流服務,為五大手機廠商和各大App提供服務,每天的請求就是以億計算,加上我們又做了SSP和DSP,就是類似于百度廣告聯盟,騰訊廣...
摘要:總結本文描述了廣告的全鏈路和相關的算法知識,受限于庫存算法的復雜性和個人知識面,只粗略的提出了兩個方案廣平使用的。 筆者加入騰訊已經快5年時光,一直負責廣告前端研發工作。最近即將離開公司,特意將廣告的全鏈路整理了一下,作為自己的一個總結。本文將從產品的角度入手,通過描述廣告的玩法,讓讀者對廣告有一個整體的概念和印象。如果你對廣告熟悉,只想了解廣告的后臺算法邏輯,大可從第三部分開始;如果...
摘要:背景在做廣點通信息流數據獲取的時候有這么一個字段投放時間段,格式為位字符串,且都為和,以半個小時為最小粒度,從周一零點開始至周日點結束。為不投放,為投放,全傳視為全時段投放,不允許全部傳。 背景 在做廣點通信息流數據獲取的時候有這么一個字段:time_series 投放時間段,格式為 48 * 7 位字符串,且都為 0 和 1,以半個小時為最小粒度,從周一零點開始至周日 24 點結束。...
閱讀 730·2023-04-25 19:43
閱讀 3974·2021-11-30 14:52
閱讀 3801·2021-11-30 14:52
閱讀 3865·2021-11-29 11:00
閱讀 3796·2021-11-29 11:00
閱讀 3894·2021-11-29 11:00
閱讀 3571·2021-11-29 11:00
閱讀 6154·2021-11-29 11:00