ãã®ã³ã¡ã³ãã§ã¯ããã®åé¡ãžã®å¯ŸåŠãæ€èšããŠããããŸããŸãªæ¹æ³ã«ã€ããŠèª¬æãããã®åé¡ã«åããç¹å®ã®æé ãã«ããŒããããå
·äœçãªåé¡ãžã®ãªã³ã¯ãæäŸããŸãïŒ https ://github.com/flutter/flutter/issues/12114#issuecomment -505633342
ä»æ¥ããããã®ããã€ãã«åãçµãã§ããŸãã 詳现ã«ã€ããŠã¯ãåã
ã®ãã°ãåç
§ããŠãã ããã
FirebaseïŒAdMobïŒãšFacebookã¯ã©ã¡ãããããã€ãã£ãåºåã圢åŒããµããŒãããŠããŸãã
ãã€ãã£ãåºåã¯ã¢ããªã®ã³ã³ãã³ãã«åãããŠã¬ã³ããªã³ã°ãããã¬ã³ããªã³ã°ãšãã©ãŒãããïŒè²ããã©ã³ãïŒã¯ã¢ããªèªäœã«ãã£ãŠå¶åŸ¡ãããŸãã
DFPããµããŒãããæ¹ãè¯ãã®ã§ã¯ãªãã§ããããã 瀟å ãããŒãAd Exchange / AdSenseããã€ãã£ã/æµåçãªåºåãªã©ãããå¹ åºã補åãçµ±åã§ããã§ããããã
ãæèŠããããšãããããŸãïŒ DFPã«ãªã³ã¯ããŠããããŸããïŒ
@gcshriã¯DoubleClickforPublishersãæå³ãããšæããŸããããã¯ãããããªããšã«ã以åã¯DARTãšåŒã°ããŠããŸããð
ãã«ãµãŒã¯ã«ïŒ
2017幎10æ12æ¥æšææ¥ã11ïŒ34 Eugenio [email protected]
æžããŸããïŒ
@gcshrihttps ://github.com/gcshriã¯DoubleClickãæå³ãããšæããŸã
åºç瀟https://en.wikipedia.org/wiki/DoubleClick_for_Publishers ã
ããããªããšã«ã以åã¯DARTãšåŒã°ããŠããŸããðâ
ã¹ã¬ãããäœæããããããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/flutter/flutter/issues/12114#issuecomment-336227022 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAAVZzZFhnb80PxDhsBj6k_30sbrs7qXks5srlu6gaJpZM4PZQgi
ã
ããã ããã«ã¯ãªãã¯ã·ã§ããããåºãŠããã®ã¯ã¹ã¯ãªããèšèªã ãšæã£ãŠããã®ã§ãDartãé¿ããŸããã ããããçå£ã«ãDFPãšã®çµ±åã¯ãGoogleãä»ã®ãœãŒã¹ããã®åºååå ¥ã«äŸåããŠããç§ãã¡ã®äžéšã«FlutterãéæŸããã§ãããã
ããããšãã DFPã«é¢é£ããAPIã®ãªã³ã¯ãããã€ãè¿œå ã§ããå Žåã¯ãç§ãã¡ïŒããã³ã³ãã¥ããã£ïŒãèŠä»¶ã確èªã§ããŸãã
ããã¯ããããé¢é£ãããªã³ã¯ã§ãã
https://developers.google.com/doubleclick-publishers/docs/clients
ã»ãšãã©ã®åºç瀟ã¯ããŠã§ãäžã§javascriptã®å®è£
ã䜿çšãããã
HTML5/ãã€ããªããã¢ããªã
GitãªããžããªïŒ
ããã¯https://github.com/flutter/flutter/issues/8098ãè€è£œããŸã
å床ã¢ã¯ãã£ãåããŸãã ïŒ8098ã¯ããããŒãšã€ã³ã¿ãŒã¹ãã£ã·ã£ã«ã®ãµããŒãã®ã¿ã远跡ããããã«å¶éãããŠããŸããã
Admobãã€ãã£ãåºåã®ãµããŒããéèŠãªå Žåã¯ããã®ãã°ã®äžçªäžã®ã³ã¡ã³ãã§[è³æ]ãã¯ãªãã¯ããŠãããã«ãæ祚ãããããšãæ€èšããŠãã ããã
AdmobåŽã§ã®äœæ¥ããªããŠããããã¯å¯èœã§ããïŒ ã€ãŸããFlutterã¯ã«ã¹ã¿ã æç»ã³ã³ãããŒã«ã䜿çšãããã€ãã£ãåºåã¯ãã€ãã£ãã³ã³ãããŒã«ã䜿çšããŸãã
ãã€ãã£ãåºåããã€äœ¿çšã§ãããããŸã䜿çšã§ãããã©ããããããªããããçŸåšã®ãããžã§ã¯ãã§Flutterã䜿çšããéã®äž»ãªé害ã¯ãã®åé¡ã§ãã
ããã¯ããã€ãã£ãåºåãã¢ããªã®ã³ã³ãã³ãã«åãããŠè¡šç€ºã§ããåªããè¿œå æ©èœã§ãã
ããã«é¢ããé²å±ã¯ãããŸããïŒ
ç§ãã¡ïŒã³ãã¥ããã£ïŒã¯æ¬åœã«ãããå¿ èŠãšããŠããŸãã ããã«ã€ããŠäœãé²å±ã¯ãããŸããïŒ
Unityã²ãŒã ïŒããã³ã¢ããªïŒã§ããã€ãã£ãåºåã衚瀺ã§ããŸãïŒ https ïŒ//developers.google.com/admob/unity/custom-native
åæããŸããããã®æ©èœã¯æ¬åœã«å¿ èŠã§ãã å°ãéå¿çã§ãããããã1.0ãã€ã«ã¹ããŒã³ä»¥åã«å ¥ããããšãã§ããŸããïŒ cc @ mit-mit
ç³ãèš³ãããŸãããããã®æ©èœã«ã€ããŠæäŸã§ããã¿ã€ã ã©ã€ã³ã¯ãããŸããã
ãã©ãã¿ãŒãŠã£ãžã§ãããšããŠå®è¡ã§ããªãå Žåãç§ãã¡ïŒã€ãŸãç§ïŒãã³ãŒãã®kotlin / swiftããŒãžã§ã³ãç·šéããã¢ãã€ã«åºåsdkããããã§äœ¿çšããããšãæ€èšã§ããå¯èœæ§ã¯ãããŸããïŒ Flutterãã©ã®ããã«æ©èœãããã«ã€ããŠã¯ããããããŸãããããã€ãã£ãAPIã«ããã¯ã§ããã®ã§ãããã¯å¯èœã§ãããšæããŸããïŒ
éçºè ãAdMobããã±ãŒãžã䜿çšããã¬ã€ãã©ã€ã³ãšäœããã®æ¿èªã䜿çšããŠé 眮ã§ãããšããããããã¯é©ãã¹ãããšã§ã-ç§ã®æèŠã§ã¯ããŠãŒã¶ãŒãšéçºè ã®äž¡æ¹ããã§ãã
äœãé²æ©ã¯ãããŸããïŒ
ããã«é¢ããé²å±ã ãã®ããšã¯ããªãã²ã©ãå¿ èŠã§ãã
ãã®æ©èœã«ã¯ããã©ãã¿ãŒãšã³ãžã³ã®ã³ã¢å€æŽãå¿ èŠã§ããïŒ
PlatformViewã¯ããããéæããã®ã«åœ¹ç«ã¡ãŸããïŒ
ææã«èŠããŸã..httpsïŒ//github.com/YoussefKababe/admob_flutter
ããã§èšç»ãããŠãããªãªãŒã¹ã¯ãããŸããïŒ
ãŸãããªãªãŒã¹äºå®ããã¥ãŒã¹ã¯ããã®ã§ããããã ä»åŸã®ãããžã§ã¯ãã§ãã©ãã¿ãŒã䜿çšãããã®ã§ããããã€ãã£ãåºåã¯éèŠã§ãã ã¢ããªã®äžéšã«éããããŒã¯å¿ èŠãããŸãã...
åãããšã èŠæ ãã®è¯ãã¢ããªã±ãŒã·ã§ã³ã«ã¯ãã€ãã£ãåºåãå¿ èŠã§ãã
ãã®ããšãé·ãéåŸ ã£ãŠããŸãïŒ'ïŒ
ãã®æãèŠæ±ãããæ©èœãžã®æã¯ãããŸããïŒ ãã®ä»ã®é¢é£ãããµãŒãããŒãã£ããã±ãŒãžã¯ä¿å®ãããŠããŸããã ã§ãããããããå¯äžã®åžæã§ãã
ç§ã¯åŠçã§ãã¢ããªã±ãŒã·ã§ã³ã®åŽã§ããããã®ãéã皌ããããšæã£ãŠããŸãããããã©ã«ãã®åºåã¿ã€ãã¯ããŸãã«ãç®ç«ããªããã®ã§ãã ç§ã¯æ¬åœã«ããã«ã€ããŠäœããããã«ã§ããããšãé¡ã£ãŠããŸãã
ããã¯ææã«èŠããŸãã https://pub.dartlang.org/packages/flutter_google_ad_manager ãæåŸ ã©ããã«åäœããããšããã¹ãããŸããã
æåã®èµ·åæã«iOSã§äŸå€ãã¹ããŒãããŸããããããä¿®æ£ããã«ã¯ã httpsïŒ//github.com/ko2ic/flutter_google_ad_manager/pull/4/commits/5ab12ad22927e1bab3615658e75636fac746fcf7ã«èšèŒãããŠããæé ã«åŸã£ãŠãã ããã
https://developers.google.com/ad-manager/mobile-ads-sdk/ios/quick-startãŸãã¯https://developers.google.com/ad-manager/mobile-ads-sdk/android/quickã確èªããŠãã ãã
ãããžã§ã¯ãã§rxDartããã±ãŒãžã䜿çšãããµãŒããŒããã¹ããªãŒã ãšããŠããŒã¿ãååŸããfirebase_admobãè¿œå ããŠã¢ããªã«åºåã衚瀺ããŸããããããŒã®åºåãå€æŽããããšãã¹ããªãŒã ãèªåçã«éå§ãããŸãã ãªãã§ãããªã®ïŒ
ææã«èŠããŸã..httpsïŒ//github.com/YoussefKababe/admob_flutter
@Purus -iOSãšAndroidXã®ãµããŒãããªãããšãé€ããŠãäžèšã®ãã©ã°ã€ã³ã䜿çšã§ããªãä»ã®çç±ã¯ãããŸããïŒ æè¿ã®ååãèãããšãåŸè ã¯ããã«è§£æ±ºãããã¯ãã ãšæããŸã...
@theneshofficial - https: //pub.dartlang.org/packages/flutter_google_ad_managerã¯ãã€ãã£ãåºåããµããŒãããŠããŸããïŒ
ãã€ãã£ãåºåïŒAdMobïŒãæ£åžžã«å®è£ ããã¢ããªã®ãã©ã°ã€ã³ããããŸãã AndroidViewsãšUIKitViewsãä»ããŠå®è£ ããŠããŸãã æ®å¿µãªãããAdMob SDKã§ã¯UnifiedNativeAdå ã«åºåãåã蟌ãå¿ èŠããããããåºåããŒã¿ãFlutterã«éä¿¡ããããšã¯ã§ããŸããã ãã®ãããFlutterãã©ã°ã€ã³ãäœæããã®ã¯ç°¡åã§ã¯ãããŸããã 代ããã«ãåºæ¬çã«Dartã§ã»ãšãã©ã®UIãäœæããAndroid / iOSèªäœã§ãã¹ãŠã®ããã¹ããç»åãªã©ãäœæããŠããããã©ãã¿ãŒUIã«ãªãŒããŒã¬ã€ããŸãã ããã¯æ©èœããŸãããäž¡æ¹ã®ãã©ãããã©ãŒã ã®ã¬ã€ã¢ãŠããäœæããå¿ èŠãããããããã¡ãã奜ãŸãããããŸããã ããã«ãããããããåºåã¯ããŸã衚瀺ãããã¯ãªãã¯ããããšãã§ããŸãã
ãã ããUIKitViewsã®ç¶æ
ãšäžè¬çãªããã©ãŒãã³ã¹ãšãã2ã€ã®å€§ããªé害ããããŸãã åè
ã®å ŽåãïŒ25965ã«èŠãããããã«ãUIKitViewsã¯çŸåšã¯ãªããã§ããŸããã ããã¯ã TabBar
ãªã©ã®ç¹å®ã®UIèŠçŽ ãã°ãªããããããšãæå³ããŸãã åŸè
ã®å Žåãåé¡ã¯ããã©ãããã©ãŒã ãã¥ãŒãåã蟌ããšUIã®ããã©ãŒãã³ã¹ãäœäžããããšã§ãã ããã©ãŒãã³ã¹ãžã®åœ±é¿ãæå°éã«æããããã«ããã®ãã©ã°ã€ã³ã®ã¡ãœãããã£ãã«ããªããªããŸã§ãããªãã®æéãè²»ãããŸããïŒä»¥åã¯ãåºåãèªã¿èŸŒãŸãããšãã«è¿œè·¡ã§ããŸãããããã®åŒã³åºãã¯åé¡ã«çŽæ¥é¢ä¿ããŠããŸããã UIããã©ãŒãã³ã¹ã§ïŒã ããã«ãããããããç¹ã«èµ·åæã«ããããã®ãã©ãããã©ãŒã ãã¥ãŒã®1ã€ã ãã®äœæã«é¢é£ããããªãã®éã®ãžã£ã³ã¯ããããŸãã ã€ã³ãžã±ãŒã¿ãŒãšã¢ãã¡ãŒã·ã§ã³ã®èªã¿èŸŒã¿ã¯ãéåžžãçŽ1ç§éåæ¢ããŸãã ãã®åŸããã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã¯å°ãªããªããŸãããçæ³çã«ã¯åºåããªã¹ãå
ã«åã蟌ã¿ãããããã¹ã¯ããŒã«äžã«60 FPSãç¶æããããšã¯ã§ããŸããïŒããã©ãŒãã³ã¹ãããã¡ã€ã©ãŒã¯ãã¬ãŒã ãããæ倧çŽ100ããªç§ã瀺ããŸãïŒã
ãããJavaã³ãŒãã®å°ããªãµã³ãã«ã§ãã iOSåŽãåãã§ãã
private UnifiedNativeAd mAd;
private FrameLayout mView;
FlutterAdView(Context context, Registrar registrar, int id) {
mView = ... // Create a placeholder view
// request an ad
}
<strong i="9">@Override</strong>
public View getView() {
return mView;
}
<strong i="10">@Override</strong>
public void onUnifiedNativeAdLoaded(final UnifiedNativeAd unifiedNativeAd) {
mAd = unifiedNativeAd;
/* Inflate your layout
/* ...
*/
/* Set your views
/* ...
*/
adView.setNativeAd(ad);
mView.addView(adView);
}
// Don't forget about dispose, etc
@JaspervanRiet-ç·ãããªãã¯åºæ¬çã«ã¡ã€ã³ã®Flutterãããåãé€ããŸã-ãã€ãã£ãåºåãå®è£ ããªãããã¯ãã¹ãã©ãããã©ãŒã ã§ãã ããªãã®ã±ãŒã¹ã§Flutterã䜿çšããã®ã¯æå³ããªããšæããŸãã https://github.com/YoussefKababe/admob_flutterãèŠãŠããã®ã¢ãããŒãã§Flutterã®é åã«æ»ããªããã©ããã確èªããŸããïŒ
@ angel1stãããã¯ãããŒåºåã§ãããã»ãŒåãæ¹æ³ã§å®è£ ãããŠããŸãã ãã€ãã£ãåºåãå¿ èŠã§ãã ç§ãã¡ã¯ä»ã§ãã¢ããªã®ä»ã®ãã¹ãŠã®éšåã«Flutterã®ãã¯ãŒãå©çšããŠããã®ã§ãããªãã®è¿äºã¯ç§ã«ã¯æå³ããããŸããã ããã¯åºåSDKã®å¶éã§ãããUnifiedNativeAdã®äœ¿çšå¶éã®ãããFlutterã®å ¬åŒåºåSDKããªãªãŒã¹ãããªãéãããããããã«å€æŽãããããšã¯æ³åã§ããŸããã
@dreamsoftinã¯ãFlutterçšã®FacebookãªãŒãã£ãšã³ã¹ãããã¯ãŒã¯ïŒhttps://github.com/dreamsoftin/facebook_audience_networkïŒãå®è£ ããŸããã çŸåšããã©ã°ã€ã³ã¯Androidã®ã¿ã§ããããããŒãã€ã³ã¿ãŒã¹ãã£ã·ã£ã«ããªã¯ãŒããããªãã€ã³ã¹ããªãŒã ãããªããã€ãã£ãåºåããµããŒãããŠããŸãã iOSã®äžéšãå®è£ ããã®ãæäŒã£ãŠããã人ãæ¢ããŠããŸãã
ãã€ãã£ãåºåã®ãã¢ïŒ
äœãé²å±ã¯ãããŸããïŒ ããããã©ãã¿ãŒã§å©çšã§ããããšãæãã§ããŸã
ããã¿ããªãéçºè ã¯æã奜ããªïŒðïŒåé¡ãé çªã«åªå ããŠããã®ã§ãåé¡ã«è³æãç¶ããŠãã ããã ããããšãïŒ
ãã®ããããã©ãã¿ãŒã¢ããªãæŽæ°ã§ããŸããïŒãã€ãã£ãåºåïŒããã€å®è£ ããããæããŠããã ããã°ãããã«å¿ããŠèšç»ãç«ãŠãããšãã§ããŸãã
ããããšãã
ããã«é¢ããå
¬åŒã®æŽæ°ããããŸã§ãadmob_flutterã䜿çšã§ããŸã
ããã±ãŒãžv0.2.0ã
ããããšãã
ãã«ãœãµãã³ã©ãããžã£ã
2019幎5æ13æ¥æææ¥ãååŸ10æ3åããŒã¯ãã§ã³ã¬ãŒãã notifications @ github.com
æžããŸããïŒ
ãã®ããããã©ãã¿ãŒã¢ããªãæŽæ°ã§ããŸããã
ãã€å®è£ ãããæããŠããã ããŸããèšç»ãç«ãŠãããšãã§ããŸã
ã«ãããšãããããšãã
â
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/flutter/flutter/issues/12114?email_source=notifications&email_token=AAIHDZ245EMJ2W2HX6MIHDDPVGJ7JA5CNFSM4D3FBARKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2Z
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAIHDZYX4MEYBTZTHKDQQFDPVGJ7JANCNFSM4D3FBARA
ã
admob_flutter
ã«é¢ããå¯äžã®ããªãããŒãªéšåã¯ãiOSãµããŒãã®æ¬ åŠã§ãã ãã以å€ã¯ãããããã¯ããã«åªããŠããŸãã
@ angel1stãã®ã¹ã¬ããã¯ãã€ãã£ãåºåçšã§ããã admob_flutter
ã§ãããµããŒãããŠããŸããã
https://github.com/dreamsoftin/facebook_audience_networkããã§ãã¯ããŠãã ããã ãã€ãã£ãåºåããµããŒãããŠããŸãã
@SachinGanesh -FANã«ã¯æ·±å»ãªCPMã®æžå¿µããããŸãã
ãã®è°è«ã«æè¡çãªããšãäœãè¿œå ããªããã€ããŒãªæŽèš-ç§ã«ãšã£ãŠãGoogleãéçºè ã«ãšã£ãŠæãããããªãã¬ãŒã ã¯ãŒã¯ã§ãããšæããããã®ã§æé«ã®åçãäžãã補åïŒåºåïŒããµããŒãããŠããªãã®ã¯å¥åŠã§ãã åã«æ絶ããããŸãã :)
https://github.com/dreamsoftin/facebook_audience_networkããã§ãã¯ããŠãã ããã ãã€ãã£ãåºåããµããŒãããŠããŸãã
@SachinGanesh iOSã§ãã€ãã£ãåºåã®ãµããŒãã¯å¯èœã§ããïŒ
ãã§ãã¯ã€ã³ããŸãããã®ãã©ã°ã€ã³ãæ¹åããŠãã ããã
ç§ãã¡ã¯çãããå¿ èŠã§ãðð
ãã®ãã©ã°ã€ã³ã¯ãiOSããµããŒãããããã«æŽæ°ãããã€ã³ã©ã€ã³admobåºåã衚瀺ããŸããããã€ãã£ãåºåã¯ãŸã ãµããŒããããŠããŸããã https://pub.dev/packages/admob_flutter
ç§ã¯æ¯æ¥æ°çŸäžäººã®èªè ã«ãªãŒãããéåžžã«å€§èŠæš¡ãªåºç瀟ã§åããŠããŸãïŒ_ç§ã¯FlutterããŒã ã®ããŸããŸãªã¡ã³ããŒãšè©±ãããŸãããã圌ãã¯ç§ãåç §ããŠããåºç瀟ãç¥ã£ãŠããŸã_ïŒã åºæ¬çãªfirebase_admobã§ãªãªãŒã¹ã§ããMVPFlutterã¢ããªããããŸããã DFPåºåãå¿ èŠãšããå¥ã®ã¢ããªã®äœæãæ€èšããŠããããã€ãã£ãåºåã®ãµããŒãããªãããšããããã«ãŒã§ãã Flutterã«ãªãœãŒã¹ãæè³ããå€ãã®ã¢ããªéçºè ã«ãšã£ãŠããããæãéèŠãªåŽé¢ã«ãã£ãŠæå¶ãããŠãããããããã¯æ®å¿µãªããšã§ãã POIïŒã»ãšãã©ã®åºåããŒãããŒã¯WebViewå ã§HTMLãã¥ãŒãšJavaScriptã䜿çšããŠããŸãã
ãã®ã¹ã¬ããã§äžèšã®æçš¿ã®ããã€ããèªããšãå€ãã®äººãç§ãã¡èªèº«ã®éçºããŒã ãšåæ§ã®æ¹æ³ã§ãã®åé¡ã解決ããããšããŠããããšã¯æããã§ããããããã®ã¢ãããŒãã¯ã¢ããããã¯ãŒã¯ã®èŠä»¶ãç¬èªã®äžæ£æ€åºæè¡ãããã³ããã¯åºæ¬çã«ãFlutterããŒã ã察åŠããå¿ èŠã®ãããã®ã§ãã
åºåãéèŠãªåå ¥æºã§ããããžãã¹ã§ã®Flutterã®æ¡çšã«æçµçã«åœ±é¿ãäžããããããã®åé¡ãé«ããããã«éåžžã«éèŠã§ããããšã匷調ããããšæããŸãã
衚瀺ããå¿
èŠã®ããåºåã®äŸã«ã¯ã次ã®ãããªãã®ããããŸãã
https://vimeo.com/186510665
ããã«èæ¯ãšããŠãTeadsã䜿çšããŠäŸããã¹ããããšãåºåã衚瀺ãããåã蟌ãŸãããããªãåçãããŸããããã°ã«ã¯æ£ããèŠèªæ§ã®è¿œè·¡ã«é¢ããåé¡ã瀺ãããŠããŸãã
Teads:
W/teads#Visibility(17978): The Teads AdView is visible at 0%, hidded by 1 View(s):
W/teads#Visibility(17978): - View of class io.flutter.plugin.platform.SingleViewPresentation$FakeWindowViewGroup, with id: -1, with contentDescription: null, with a size of: [width: 1050, height: 875] is hidding 100% of the ad
https://github.com/dreamsoftin/facebook_audience_networkããã§ãã¯ããŠãã ããã ãã€ãã£ãåºåããµããŒãããŠããŸãã
@SachinGanesh iOSã§ãã€ãã£ãåºåã®ãµããŒãã¯å¯èœã§ããïŒ
ã¯ãã UiKitViewãŠã£ãžã§ããã§å¯èœã§ãã ãã ããiOSã®ãã€ãã£ãåºåã¯ãŸã facebook_audience_networkã«å®è£ ãããŠããŸãã
ç§ã¯@nodinosaurãšååããŠããã圌ã®äž»åŒµã«å ããŠãFlutterã§çŽ æŽããããããžã§ã¯ããäºå®ãããŠããŸãããDFP/åºåã§ã®åãããªããšããããšã¯Flutterããªãããšãæå³ããŸãã
ç§ã¯ç§ã®åœã§æ倧ã®ãœãŒã·ã£ã«ãããã¯ãŒã¯ã®åµèšè
ã§ããã1500äžäººã®ã¢ã¯ãã£ããŠãŒã¶ãŒãããŸãã Flutterã«ç§»è¡ããããšã«ããŸããããã¢ããªã±ãŒã·ã§ã³ãçµäºãããšãã«ãåçåã§ããªãããšã«æ°ã¥ããŸããã ãããŒãã€ã³ã¿ãŒã¹ãã£ã·ã£ã«ã§ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæãªãããšã¯ãããŸããã ãã€ãã£ãADSã¯ãç©æ¥µçã«ãªããã«åçåã§ãããããä»æ¥ã§ã¯ãªããŠã¯ãªããªãã¢ããªã±ãŒã·ã§ã³ã§ãã
4ãæã®ä»äºã®åªå€±ãç§ã¯Swift+Kotlinã«æ»ããŸãã
@jonataslawãã£ãŒãããã¯ããããšãããããŸãã ãã€ãã£ãDFPåºåã¯æ©èœããŸãã Teadsã®ãããªäžéšã®ãããªãã·ã£ãŒã¯ãç¬èªã®å¯èŠæ§æ€åºã³ãŒãã䜿çšããŠããŸãã ç§ã¯ããã解決ãããšæããŸãã
é¢é£ããã³ãŒãã¯https://github.com/flutter/engine/blob/master/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.javaã§ãã
ã³ãŒãã®äžéšã§èª¬æãããŠããããã«ïŒ
/*
* A presentation used for hosting a single Android view in a virtual display.
*
* This presentation overrides the WindowManager's addView/removeView/updateViewLayout methods, such that views added
* directly to the WindowManager are added as part of the presentation's view hierarchy (to fakeWindowViewGroup).
*
* The view hierarchy for the presentation is as following:
*
* rootView
* / \
* / \
* / \
* container state.fakeWindowViewGroup
* |
* EmbeddedView
*/
ãã®fakeWindowViewGroup
ã¯ã EmbeddedView
ã®äžã«é
眮ãããŸããããã®éæãªTeadsã¯ãå°ãªããšããã¥ãŒå
šäœãã«ããŒããŠãããšä¿¡ããŠããŸãã fakeWindowViewGroup
ã¯ããããã¢ããã¡ãã¥ãŒãšããã«ãè¿œå ããããšãã«ããã€ãã£ããã¥ãŒã®äžã«é
眮ãããããã«ããããã«å¿
èŠã§ãã
ãã ããããã¯å®éã«ã¯å°ãç°ãªãæ¹æ³ã§å®çŸã§ããŸãã fakeWindowViewGroup
ã®æåã®ãã¥ãŒã¯ã container
ã§ããå¿
èŠããããŸãã ããã«ããã fakeWindowViewGroup
ãå
åŒã§ã¯ãªã芪ã«ãªããŸãã WindowManagerã®addView
/ removeView
/ etcã³ãŒã«ããã¯ã¯ãçŸåšãšåãããã«ãã¥ãŒãè¿œå ããã³åé€ã§ããŸããããã«ããããã¥ãŒãEmbeddedView
ã®ãäžãã«é
眮ãããŸãã Androidã®æšæºã®æç»é åºã fakeWindowViewGroup
å
åŒãEmbeddedView
ãé èœããŠãããšããåé¡ã解決ããŸãã
/ cc @amirh
ãã¹ãã®ããã«ãèªåã®ããŒã«ã«åã蟌ã¿ãã¥ãŒã³ãŒãããã¹ãããŸããã
private void findAndHideFakeWindowManagerViewGroup()
{
final ViewGroup parent = (ViewGroup) ((ViewGroup) getParent()).getParent();
parent.getChildAt(1).setVisibility(View.INVISIBLE);
}
ãããŠãããã§åé¡ã¯è§£æ±ºããŸããã ãããã£ãŠããã©ãããã©ãŒã SingleViewPresentation.java
ãç§ã®åã®ã³ã¡ã³ãã®ããã«æ©èœããããã«èª¿æŽãããŠããå Žåãåé¡ã¯è§£æ±ºããŸãã
__ããã¯è§£æ±ºçã§ã¯ãããŸãã..åé¿çã§ãã åã蟌ã¿ãã¥ãŒããã€ã¢ãã°ãŸãã¯ãããã¢ããã¡ãã¥ãŒããããã¯ãã«ã¹ã¯ãªãŒã³ãã¥ãŒã衚瀺ããããšããå Žåã äžèšã®ã³ãŒãã䜿çšããŠããå Žåã¯è¡šç€ºãããŸããã PRãããŒãžãããã®ããåŸ ã¡ãã ãã__
Androidã®åé¡ã解決ããPRãæ·»ä»ãããŠããŸãã åãåé¡ãiOSã«ååšãããã©ããã¯ããããŸããã çŸåšããã¹ããããšã³ãžã³ããã«ãã§ããªãããã誰ãããã«ããå®è¡ããå¿ èŠããããŸãã ããŒã ããããçŽæ¥å®è¡ã§ããå Žåã¯ãã«ã¹ã¿ã ãšã³ãžã³ãã«ããããŒã«ã«ã®ad-SDKã«å¯ŸããŠæ€èšŒããŠãä¿®æ£ãæ©èœããããšãæ€èšŒã§ããŸãã
ãã®æ©èœãŸãã¯ç§ãã¡ãæåŸ ã§ããã¿ã€ã ã©ã€ã³ã«é²å±ã¯ãããŸããïŒ
@RaresMihalceaã¯ããã®æ©èœã®éèŠæ§ãèãããšãããäžå®ãªæªæ¥ã®ãã€ã«ã¹ããŒã³ïŒ2033幎1æ1æ¥ãŸã§ã«æéïŒã«èšå®ãããŠããŸãã ãã€ãã£ãAdMobåºåã®ãµããŒããäžè¶³ããŠããããšã¯ãå€ãã®éçºè ã«ãšã£ãŠç»æçãªããšã ãšæããŸãã
ã¯ã©ã€ã¢ã³ãã«ãå¿ èŠãªããšã¯ãã¹ãŠã§ãããFlutterã¯çŽ æŽãããããiOSã§ã¯ãã€ãã£ãåºåã¯ã§ããªãããšèšããããåŸãªããªã£ãã ããããã®ãã¬ãŒã ã¯ãŒã¯ã«æ¥ã人ã«ãšã£ãŠã®ååŒãã¬ãŒã«ãŒã§ãããšããããã倧ããããšãšèŠãªãããŠããªãã®ã¯éåžžèã ãšæããŸãã ã°ãŒã°ã«plzïŒ
ãã§ãã¯ã€ã³ãæŽæ°ã¯ãããŸããïŒ
ãã®ããããããžã§ã¯ãã«äœ¿çšã§ãã代æ¿ã®æè¡ã¹ã¿ãã¯ãæ€èšããŠããŸãããããã«ã¯ããã€ãã£ãåºåãå¿
èŠã§ãã
ç§ã¯ãreact-nativeãšionicã®ãµããŒãããŸãã¯ãããã®çŸå®çãªã¿ã€ã ã©ã€ã³ããµããŒããããŠããªãããšãç¥ããŸããã
ãã€ãã£ãåºåã¯ãã€ãã£ãããã¯ããã tssã®ããã ãã®ãã®ã§ããå¯èœæ§ããããŸããïŒ
æ®å¿µãªãããããããããžã§ã¯ããå®éã«å®è¡ããã«ã¯ãKotlinãåŠç¿ããMac OS VMãããŠã³ããŒãããå¿
èŠãããããã§ããããã¯ãäœã¶æãéå§ã§ããªãããšã«ããããããŠããããã§ãã
PS誰ããå®éã«ãã€ãã£ãåºåã®äœ¿çšãå¯èœã«ããIonicãŸãã¯React-Nativeã®ã¢ãžã¥ãŒã«ãç¥ã£ãŠãããªããç§ã¯æ¬åœã«æè¬ããŠããŸãïŒ
ãã€ãã£ãåºåã¯çæ³çã§ããããã€ãã£ãadmobåºåã¯ãã€ãã£ãã¢ããªã®éçºã§ãããŒã¿çã§ããããããããŸã§ã®éã次ã®å¶éãããfirebase_admobãã©ã°ã€ã³ã§ãããä¿®æ£ã§ããã°å¹žãã§ãã
ããããŒåºåã®ããžã·ã§ãã³ã°æ©èœã¯å¶éãããŠããŸããç»é¢ã®äžéšãŸãã¯äžéšã«ã端ããè«ççãªãã¯ã»ã«ãªãã»ããã§é 眮ã§ããŸããã
圌ããå°ãªããšããããä¿®æ£ã§ããã°ããŠãŒã¶ãŒãã¹ã¯ããŒã«ã§ããããã€ãã£ãããªæ¹æ³ã§åºåã衚瀺ããããšãã§ããŸãã
ããã解決ããããšããä»ã®ãã©ã°ã€ã³ãããããšã¯ç¥ã£ãŠããŸãããç¹ã«iOSã®å Žåã¯ãã°ããããŸãã ãfirebase_admobããšåŒã°ãããã©ãã¿ãŒããã¯ãã©ã°ã€ã³ã®äžéšã ã£ããçŽ æŽããããšæããŸãã
Flutterã¯çŽ æŽãããã§ããããã€ãã£ãåºåãåºãã®ã¯2033幎1æ1æ¥ãŸã§åŸ ã¡ãŸããã ããã¯é¢çœãã§ããããã¯æ¬åœã«é¢çœãã§ããããã¯2019幎ã§ãããããŠãã®ãããªé¢é£ãã圹å²ãæã€ããã«ãç§ãã¡ã¯å«ãçãŸããã®ãåŸ ããªããã°ãªããŸããïŒ2033幎ã«ã¯ãAndroidããšãIOSããã¯ãããžãŒãã10幎ããšã«æŽæ°ãããŠããªããããããŸããïŒãã€ãã£ãåºåããããŸãã
ãã£ãŒãããã¯ããå¯ãããã ãããããšãããããŸãã
ãã®ã¹ã¬ããã§ã¯è€æ°ã®æ©èœãšæœåšçãªè§£æ±ºçã«ã€ããŠèª¬æããŠããŸããã³ãã¥ããã£ã®éèŠãããããç解ããããã«ããããè€æ°ã®åé¡ã«åå²ããŠããŸããæ°ã«ãªãåé¡ã«èŠªæãç«ãŠãŠãã ããã
çŸåšã®å·ã§äœ¿çšãããŠããããã€ãã£ãåºåããšããçšèªã¯ãããã€ãã£ãåºåããšåŒã°ããç¹å®ã®AdMobåºåãã©ãŒããããæããŸããããã¯ãçŸåšãéãããã¢ããªéçºè ïŒãããªãã·ã£ãŒïŒãå©çšã§ããŸãã ãã€ãã£ãåºåãã©ãŒãããã䜿çšãããšãéçºè ã¯åºåã®ã¬ã³ããªã³ã°æ¹æ³ãã«ã¹ã¿ãã€ãºã§ããŸãïŒåºåçšã«ç¬èªã®Android / iOSãã¥ãŒãäœæããããšã«ããïŒã
ããã§èª¬æããæ©èœã¯ãã¢ããªéçºè ãAndroid / iOS UIã³ã³ããŒãã³ãïŒFlutterãŠã£ãžã§ããã§ã¯ãªãïŒã䜿çšããŠåºåã®ã¬ã³ããªã³ã°æ¹æ³ãæ§æãããã€ãã£ãåºåãåŸã§ãã©ãããã©ãŒã ã«ãã£ãŠã¬ã³ããªã³ã°ãããFlutterãŠã£ãžã§ããããªãŒã«åã蟌ãŸããããšãæå³ããŸãã
ããã¯ãçŸåšã®åé¡ã§è¿œè·¡ããŠãããã®ã§ãã
ãã®å·ã§èª¬æããè¿œå æ©èœã¯ã AdMobãããŒåºåãFlutterãŠã£ãžã§ããããªãŒã®äžéšãšããŠåã蟌ãæ©èœã§ãïŒããã«å¯ŸããŠãFirebase_admobãã©ã°ã€ã³ãæ¡çšããŠããçŸåšã®ã¢ãããŒãã§ã¯ããããŒåºåãFlutterUIã®äžã«ãªãŒããŒã¬ã€ããŸããããªã»ããäœçœ®ïŒã
ããã¯https://github.com/flutter/flutter/issues/35081ã§è¿œè·¡ãããŠããŸããæ°ã«ãªãå Žåã¯ã芪æãç«ãŠãŠãã ããã
ããã«ãããfirebase_admobãã©ã°ã€ã³ã®çŸåšã®ãããŒãµããŒããšã»ãŒåãæ©èœãæäŸãããŸããããã€ãã£ãåºåã䜿çšãããŸãïŒããšãã°ããã€ãã£ãåºåã¯åºå®äœçœ®ã«è¡šç€ºãããFlutter UIå šäœã«è¡šç€ºãããŸãïŒã
ãã€ãã£ãåºåãåã蟌ãããšãã§ããããšã¯æããã«ããè¯ããªãã·ã§ã³ã§ãããçŸåšã®ãããŒãµããŒããšåæ§ã®ãã®ããããŒãã£ã³ã°ãã¢ãããŒãã¯ãããçãæéæ å ã§æåŸ ã§ãããã®ã§ãã
ãã®ãªãã·ã§ã³ã圹ç«ã€å Žåã¯ã httpsïŒ//github.com/flutter/flutter/issues/35082ãŸã§èŠªæãè¿œå ããŠãã ããã
ããã¯ããã€ãã£ãAndroid / iOSåãã«éçºããŠããå Žåãšåæ§ã«ãFlutterãŠã£ãžã§ããã䜿çšããŠãã€ãã£ãåºåãã¬ã³ããªã³ã°ããããšãæå³ããŸãã
ãã®ãªãã·ã§ã³ã¯ããããéæããã®ãæãå°é£ã§ãããå°æ¥çã«ã¯ãŸã é ãããšã«æ³šæããŠãã ããã
ããã¯https://github.com/flutter/flutter/issues/35083ã§è¿œè·¡ãããŠããŸã
ãã€ãã£ãåºåã¯çæ³çã§ããããã€ãã£ãadmobåºåã¯ãã€ãã£ãã¢ããªã®éçºã§ãããŒã¿çã§ããããããããŸã§ã®éã次ã®å¶éãããfirebase_admobãã©ã°ã€ã³ã§ãããä¿®æ£ã§ããã°å¹žãã§ãã
ããããŒåºåã®ããžã·ã§ãã³ã°æ©èœã¯å¶éãããŠããŸããç»é¢ã®äžéšãŸãã¯äžéšã«ã端ããè«ççãªãã¯ã»ã«ãªãã»ããã§é 眮ã§ããŸããã
圌ããå°ãªããšããããä¿®æ£ã§ããã°ããŠãŒã¶ãŒãã¹ã¯ããŒã«ã§ããããã€ãã£ãããªæ¹æ³ã§åºåã衚瀺ããããšãã§ããŸãã
ããã解決ããããšããä»ã®ãã©ã°ã€ã³ãããããšã¯ç¥ã£ãŠããŸãããç¹ã«iOSã®å Žåã¯ãã°ããããŸãã ãfirebase_admobããšåŒã°ãããã©ãã¿ãŒããã¯ãã©ã°ã€ã³ã®äžéšã ã£ããçŽ æŽããããšæããŸãã
@ matte5031 Androidãã¹ãåºåã§ã https://pub.dev/packages/admob_flutter ããè©ŠããŸãããããããŸã§ã®ãšããããªã¹ããã¥ãŒã«åºåãè¶³å Žã®äžã«è¿œå ããŠãçŽé¢ãã課é¡ã®ã»ãšãã©ã解決ããæ¹æ³ã«ã¯ã¯ã¯ã¯ããŠããŸãããŸããreact.jsãšApacecordovaã®æè¡ã¹ã¿ãã¯ãåããä»ã®ãã©ãã¿ãŒã¢ãã¢ããã©ã°ã€ã³ã ãã ããAdMobãã¹ãåºåã§ãã¹ãããŠããã ãã§ãæ¬çªç°å¢ã§ã¯ç¢ºèªãããŠããŸããã
@ashishsukhijaã¯ããAndroidãã¹ãåºåãæ©èœããããšã¯ç¥ã£ãŠããŸãããiOSã¯æ©èœããŸããã§ããã ãã®ãããç§ã¯ãããããã§ã«ååšããŠããããã®ATMããªãgooglemaintanedãã©ã°ã€ã³ã«å«ããããšãæãã§ããŸãã
ãŠã£ãžã§ããããªãŒã®äžéšãšããŠãã©ãããã©ãŒã åºæã®ãã€ãã£ãåºåUIãåã蟌ãããšã«ããããã€ãã£ãåºåã¢ããã³ã¹ããµããŒããã
ããã¯ãFlutter with Platform ViewsïŒ Android View / UIKitView ïŒã§ãã§ã«å¯èœã§ãã FacebookãªãŒãã£ãšã³ã¹ãããã¯ãŒã¯ãã©ã°ã€ã³ã«ãã€ãã£ãåºåãå®è£ ããŸããã ããã¯ããã€ãã£ãåºåãå«ãAd SDKããã©ãã¿ãŒã¢ããªã«ç°¡åã«è¿œå ããŠããŠã£ãžã§ããããªãŒå ã«è¡šç€ºã§ããããšãæå³ããŸãã
ãã€ãã£ãåºåãæ¬çªã¢ããªã§ã©ã®ããã«è¡šç€ºããããã®äŸã次ã«ç€ºããŸãã
@SachinGaneshãã©ã°ã€ã³ã¯Androidã®ã¿ããµããŒãããŸãã UIKitViewã«ã¯ãã¯ãªããã§ããªãïŒïŒ25965ïŒãªã©ã®å€§ããªå¶éãããããããä¿¡é Œã§ããã¡ãœãããšåŒã¶åã«è§£æ±ºããå¿ èŠããããŸãã çŸåšããã®æ¹æ³ã䜿çšãããšãããã©ãŒãã³ã¹ã«é倧ãªåé¡ãçºçããŸãã
@JaspervanRietãã€ãã£ãåºåã®UIãã¯ãªããããå¿ èŠã¯ãããŸããã ç§ãèšæ£ããŠãã ããç§ãééã£ãŠããå Žåãããã¯ã³ã³ããã®æå€§å¹ ã®ããŒã¹ãåããŸãããïŒ
@FarmaanElahiã¯ãªããã³ã°ã®å¿
èŠæ§ã¯ãå®éã®ãŠã£ãžã§ãããã¯ãªããããã®ã«åœ¹ç«ã€ãšããçç±ã ãã§ãªããããããµããŒããããŠããªããããçŸåšUIKitViewsãUIèŠçŽ ãã¯ãªããããããšãæå³ããŸãã åºåä»ãã®UIKitViewããªã¹ãã«å
¥ãããšããã®ãã¥ãŒã¯TabBar
ãã¯ãªããããŸãã ã€ãŸããç§ãã¡ã®ãããžã§ã¯ãã§ã¯ãåºåã衚瀺ããæ¹æ³ãšããŠã¯äœ¿çšã§ããŸããã
@SachinGaneshãã©ã°ã€ã³ã¯çŽ æŽããããæ£çŽãªãšããããã€ãã£ãåºåã®ç¹ã§çŸæç¹ã§æé«ã§ãã
æçµçã«ãå°ãªããšãUIã®ãã¹ãŠã®èŠçŽ ãå«ãã³ãŒããèšè¿°ã§ããããã«ãªããŸããã ãã©ã°ã€ã³ãã©ã®ããã«æ¹åããããã«ã€ããŠã®ããŒãããããGitHubããŒãžã«æçš¿ããŠããã ããŸããïŒ ç§ã¯IOSãµããŒãããã€åºãŠããã®ãç¥ãããã§ãã
Flutterã®AndroidViewãšUiKitViewã¯ããã©ãããã©ãŒã UIã³ã³ããŒãã³ãã®äœã¬ãã«ã®æäœã«äŸåããŠãããããã¢ãã€ã«åºåãšã³ãžãã¢ãªã³ã°ããŒã ãäºæããããã¹ããè¡ããªãã£ãæ¹æ³ã§Google MobileAdsSDKãšããåãããããšãã»ãŒä¿èšŒãããŠããŸãã ãã®ã¢ãããŒããçŸåšæ©èœããŠããããã«èŠããŠããMRAIDæ©èœãã¯ãªãšã€ãã£ãã«å«ãŸããŠããJSã³ãŒããã€ã³ãã¬ãã·ã§ã³ãšã¯ãªãã¯ã®æž¬å®ã§åé¡ãçºçããå¯èœæ§ããããŸãã ã€ã³ãã¬ãã·ã§ã³ãšã¯ãªãã¯ã®çµ±èšæ å ±ã«ç°åžžããããšã¢ã«ãŠã³ããåæ¢ãããå¯èœæ§ãããããããããã®æåŸã®ãã®ã¯ç¹ã«éèŠã§ãã
é¢ä¿è ãšãããã®åé¡ã«åãçµãã§ããéãFlutterããŒã ã®firebase_admobãã©ã°ã€ã³ã䜿çšããããšã匷ããå§ãããŸãããŸãããã©ãããã©ãŒã ãã¥ãŒã䜿çšããŠAdMobåºåãåã蟌ããã©ã°ã€ã³ã®äœ¿çšã¯ãå§ãããŸããã
æ å ±ãããããšã@amirh <3
ããã¯ãFlutterãç¡æã¢ããªã®å®è¡å¯èœãªéžæè¢ã§ããããã®çµ¶å¯Ÿçãªå¿ éåã§ãã
AdmobããŒã ã«ãAndroidViewãšUiKitViewã®äœ¿çšãæå¹ãªãœãªã¥ãŒã·ã§ã³ã§ãããã©ããã確èªããŠãããããšã¯ã§ããŸããïŒ ããã§ãªãå Žåã @ amirhãäžã§èª¬æããããã«ã代æ¿ãœãªã¥ãŒã·ã§ã³ã¯äœã§ããïŒ
@charleshanã¯ãããŸããŸãªè§£æ±ºçã远跡ããåé¡ã«ã€ããŠhttps://github.com/flutter/flutter/issues/12114#issuecomment-505633342ãåç §ããŠãã ããïŒãããŠãããŸãããã°ãããã«è§£æ±ºããããšãã§ããŸãïŒã
Google Admobã®ç¢ºèªæžã¿ã®Twitterã¢ã«ãŠã³ãã¯ããã€ãã£ãåºåããã¹ãŠã®éçºè
ã«å©çšå¯èœã«ãªãããšãçºè¡šããŸããã ãã®ã¹ã¬ããã¯ããã«ã€ããŠç¥ããããããããªããšæã£ã:)ã
調åã¯ã©ãã§ããïŒ
ãã£ãŒãããã¯ããå¯ãããã ãããããšãããããŸãã
ãã®ã¹ã¬ããã§ã¯è€æ°ã®æ©èœãšæœåšçãªè§£æ±ºçã«ã€ããŠèª¬æããŠããŸããã³ãã¥ããã£ã®éèŠãããããç解ããããã«ããããè€æ°ã®åé¡ã«åå²ããŠããŸããæ°ã«ãªãåé¡ã«èŠªæãç«ãŠãŠãã ããã
ãŠã£ãžã§ããããªãŒã®äžéšãšããŠãã©ãããã©ãŒã åºæã®ãã€ãã£ãåºåUIãåã蟌ãããšã«ããããã€ãã£ãåºåã¢ããã³ã¹ããµããŒããã
çŸåšã®å·ã§äœ¿çšãããŠããããã€ãã£ãåºåããšããçšèªã¯ãããã€ãã£ãåºåããšåŒã°ããç¹å®ã®AdMobåºåãã©ãŒããããæããŸããããã¯ãçŸåšãéãããã¢ããªéçºè ïŒãããªãã·ã£ãŒïŒãå©çšã§ããŸãã ãã€ãã£ãåºåãã©ãŒãããã䜿çšãããšãéçºè ã¯åºåã®ã¬ã³ããªã³ã°æ¹æ³ãã«ã¹ã¿ãã€ãºã§ããŸãïŒåºåçšã«ç¬èªã®Android / iOSãã¥ãŒãäœæããããšã«ããïŒã
ããã§èª¬æããæ©èœã¯ãã¢ããªéçºè ãAndroid / iOS UIã³ã³ããŒãã³ãïŒFlutterãŠã£ãžã§ããã§ã¯ãªãïŒã䜿çšããŠåºåã®ã¬ã³ããªã³ã°æ¹æ³ãæ§æãããã€ãã£ãåºåãåŸã§ãã©ãããã©ãŒã ã«ãã£ãŠã¬ã³ããªã³ã°ãããFlutterãŠã£ãžã§ããããªãŒã«åã蟌ãŸããããšãæå³ããŸãã
_ããã¯ãçŸåšã®åé¡ã§è¿œè·¡ããŠãããã®ã§ãã_
FlutterãŠã£ãžã§ããããªãŒã«AdMobãããŒåºåãåã蟌ã
ãã®å·ã§èª¬æããè¿œå æ©èœã¯ã AdMobãããŒåºåãFlutterãŠã£ãžã§ããããªãŒã®äžéšãšããŠåã蟌ãæ©èœã§ãïŒããã«å¯ŸããŠãFirebase_admobãã©ã°ã€ã³ãæ¡çšããŠããçŸåšã®ã¢ãããŒãã§ã¯ããããŒåºåãFlutterUIã®äžã«ãªãŒããŒã¬ã€ããŸããããªã»ããäœçœ®ïŒã
_ããã¯ïŒ35081ã§è¿œè·¡ãããŠããŸããæ°ã«ãªãå Žåã¯ã芪æãç«ãŠãŠãã ããã_
FlutterUIã®äžã«ãã©ãããã©ãŒã åºæã®ãã€ãã£ãåºåUIããªãŒããŒã¬ã€ããããšã«ãããã€ãã£ãåºåã¢ããã³ã¹ã®ãµããŒã
ããã«ãããfirebase_admobãã©ã°ã€ã³ã®çŸåšã®ãããŒãµããŒããšã»ãŒåãæ©èœãæäŸãããŸããããã€ãã£ãåºåã䜿çšãããŸãïŒããšãã°ããã€ãã£ãåºåã¯åºå®äœçœ®ã«è¡šç€ºãããFlutter UIå šäœã«è¡šç€ºãããŸãïŒã
ãã€ãã£ãåºåãåã蟌ãããšãã§ããããšã¯æããã«ããè¯ããªãã·ã§ã³ã§ãããçŸåšã®ãããŒãµããŒããšåæ§ã®ãã®ããããŒãã£ã³ã°ãã¢ãããŒãã¯ãããçãæéæ å ã§æåŸ ã§ãããã®ã§ãã
_ãã®ãªãã·ã§ã³ã圹ç«ã€å Žåã¯ãïŒ35082ãŸã§èŠªæãè¿œå ããŠãã ããã_
Flutterã¬ã³ããªã³ã°ã§é«åºŠãªãã€ãã£ãåºåããµããŒã
ããã¯ããã€ãã£ãAndroid / iOSåãã«éçºããŠããå Žåãšåæ§ã«ãFlutterãŠã£ãžã§ããã䜿çšããŠãã€ãã£ãåºåãã¬ã³ããªã³ã°ããããšãæå³ããŸãã
ãã®ãªãã·ã§ã³ã¯ããããéæããã®ãæãå°é£ã§ãããå°æ¥çã«ã¯ãŸã é ãããšã«æ³šæããŠãã ããã
_ããã¯ïŒ35083ã§è¿œè·¡ãããŸã_
ç§ã¯ãã°ãããã®ã¹ã¬ããããã©ããŒããŠããŠãæ©èœã«æ祚ããããã®ãã®ãªã¯ãšã¹ããèŠéãããšãã§ããŸããã ãã®åé¡ã¯ãã»ãŒ18ãæéããããæ祚ã®1ã€ã§ãããé²å±ã®å åããªããããæ祚ãã©ã®çšåºŠåœ¹ç«ã€ãã¯ããããŸããã
æ°é±éåã«èª°ãããããããã§å ±æããããšãèŠããŠããŸããã圌/圌女ã¯æçš¿ãåé€ããããã§ãã
ããã«ããå šå¡ãFlutterããŒã ããã®ååæããšã®èª¿æ»ãå®äºããå¿ èŠããããŸãïŒ https ïŒ//twitter.com/flutterdev/status/1160961757118181378
ããå
·äœçã«ã¯ããã®éšåïŒ
æ°é±éåã«èª°ãããããããã§å ±æããããšãèŠããŠããŸããã圌/圌女ã¯æçš¿ãåé€ããããã§ãã
ããã«ããå šå¡ãFlutterããŒã ããã®ååæããšã®èª¿æ»ãå®äºããå¿ èŠããããŸãïŒ https ïŒ//twitter.com/flutterdev/status/1160961757118181378
ããå ·äœçã«ã¯ããã®éšåïŒ
調æ»ã¯ã¢ã¯ãã£ãã§ã¯ãªããªããŸããã
ãã€ãã£ãéšåã«ã€ããŠã®ãã¥ãŒã¹ã¯ãããŸããïŒ
ãã®åé¡ã¯ããã«ã¯è§£æ±ºãããªãããã§ãã ãããããFlutterããŒã / Googleã®èª°ããAdmobã®äººã
ã«é£çµ¡ããŠã圌ãã®åŽããäœãã§ããããšããããã©ããã確èªããããšãã§ããŸãã ãã€ãã£ãåºåãUnityã§ã©ã®ããã«æ©èœããã®ãçåã«æã£ãŠããŸãã
https://developers.google.com/admob/unity/custom-native
ãããéžæè¢ã§ã¯ãªãå Žåãåœé¢ã¯å¥ã®è§£æ±ºçãèããããšãã§ããŸããïŒ ç¡æã¢ããªãéªéã«ãªããªãæ¹æ³ã§åçåãããã®ã§ãããããçš®ã®ã¢ãã£ãªãšã€ãããã°ã©ã ãµãŒãã¹ïŒCJã¢ãã£ãªãšã€ãïŒã¯ã©ãã§ããïŒ ãŸããç§ãã¡ã䜿çšã§ãããªãŒãã³ãœãŒã¹ã®ã¢ãããã¯ã®æšå¥šäºé ã¯ãããŸããïŒ
@charleshan-ããã¯æ»ãã æ©äŒã®ããã§ãã åºåãããŒãžã£ãŒãšé¢é£ããflutter_ad_managerãŠã£ãžã§ããã®äœ¿çšãæ€èšããŠãã ããã ããã«ããªãã®æ°ã®æšæºãããŒã¯ãªãšã€ãã£ããè¿œå ããã¢ããªã§è€æ°ã®ãŠã£ãžã§ãããäœæã§ããŸãã
ãã¹ãŠã®Firebase
ãã©ã°ã€ã³ã¯ãhttpsïŒ//github.com/flutter/pluginsããhttps://github.com/FirebaseExtended/flutterfireã«ç§»åãããŸãã
çŸåšã®åé¡ãå€ããªã£ãŠãããšããããšã§ããïŒ ããã§æ°ããåé¡ãéããªããã°ãªããªãããã§ãã
ãããå®å šã«ãµããŒãããã«ã¯ãã¬ãŒã ã¯ãŒã¯/ãšã³ãžã³ã®å€æŽãå¿ èŠã«ãªãå¯èœæ§ãããããããšã«ããããã§åé¡ãæ±ããŠããŸãã
ããã¯ææã«èŠããŸãïŒ httpsïŒ//pub.dev/packages/native_adsã Androidã§ãã€ãã£ããã¹ãåºåãæ©èœãããããšãã§ããŸããã iOSã§ã¯ãŸã ãã¹ãããŠããŸããã native_ad_layout.xmlãandroid/app / src / res / layoutãã£ã¬ã¯ããªã«è¿œå ããpackageNameãapplicationIdã«å€æŽããå¿ èŠããããŸãã
ããçšåºŠã®é²æ©ãèŠãããŸãð
@sethladd
ãã®åé¡ã¯https://github.com/FirebaseExtended/flutterfire/issues/968ã«ç§»åãããŸããã ãã以äžã®ã³ã©ãã¬ãŒã·ã§ã³ã¯ããã§è¡ãããŸãã
firebase_admob
ã®åé¡ã¯ããã©ã°ã€ã³åŽã ãã§ãªãFlutteråŽã§ãäœæ¥ããå¿
èŠãããããããããã®åé¡ã¯è§£æ±ºããããŸã§ããã§ãéãããŸãŸã«ãªããŸãã
ãŸãããŠãŒã¶ãŒãéä¿¡ããããŒã¿ã«å€§ããäŸåããã¢ããªãåçåããããã«ããããå¿ èŠã§ãã åºåã¢ããããŒãã³ã³ãã³ããšã€ã³ã©ã€ã³ã§è¡šç€ºããããã®éªéã«ãªããªãæ¹æ³ãæ¬åœã«å¿ èŠã§ãã åªåããŠãããŠããããšãã
ç§ã¯ãããäœã¶æãæ©èœãããããšãã§ããŸããã§ããã ãããŸã§ã®éãiOSã§åé¡ãªãåäœãããã©ããã¯ããããŸããïŒ
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ
ããã«ã¡ã¯ãgoogleadmobã®ãã€ãã£ãåºåããµããŒãããnative_adsãšããããã±ãŒãžããããŸãã ç§ã¯ãŸã è©ŠããŠããŸããããããã¯åãªãææ¡ã§ãã
https://pub.dev/packages/native_adsã§å ¬éããŸããã ããªãã¯ããããã§ãã¯ããããã«ç§ãã¡ã®ã¿ã€ãã¢ããªãã€ã³ã¹ããŒã«ããããšãã§ããŸãïŒ
https://play.google.com/store/apps/details?id=com.us.techone.tidewatch
https://apps.apple.com/us/app/tidewatch-by-techone/id1477715216
native_ads
ããã³Flutterã®PlatformView
ãŠã£ãžã§ããã䜿çšããŠåºåã衚瀺ããããšãããã®ä»ã®ãã©ã°ã€ã³ã«é¢ããç°¡åãªæ³šæäºé
ïŒ
ã³ãã¥ããã£ã®äººã ããããã®ã¿ã€ãã®ããšã«åãçµãã§ããã®ãèŠãã®ã¯çŽ æŽãããããšã§ãããç»é¢ã«åºåã衚瀺ããããšã¯ãã¢ãã€ã«åºåãã©ã°ã€ã³ã®ä»äºã®äžéšã«ãããªãããšã誰ããç¥ã£ãŠããå¿ èŠããããŸãã åºåã¯ã衚瀺ã«å ããŠãã€ã³ãã¬ãã·ã§ã³ã®è¿œè·¡ãã¯ãªãã¯ã®åŠçãMRAIDãAdChoicesã®é 眮ãã¹ãã 察çæ©èœãäžé£ã®ä¿¡å·å šäœã®æ£ç¢ºãªæž¬å®ãªã©ãåŠçããå¿ èŠããããŸãã
ãã€ãã£ãåºåçšã®Googleã®ãã©ã°ã€ã³ããŸã ãªãçç±ã¯ããã¹ãŠãæ£ããååŸããã®ãéåžžã«é£ããããã§ããæ£ããèšå®ããªããšãåçã倱ãããããçµ±èšãäžæ£ç¢ºã«ãªã£ãããAdMobããã®ä»ã®ã¢ã«ãŠã³ãã«ããã¢ã«ãŠã³ãã®åæ¢ãçºçãããããå¯èœæ§ããããŸãã仲ä»ãããåºåãããã¯ãŒã¯ã
ãã®ãããä»ã®ãšããfirebase_admob
ãã©ã°ã€ã³ã䜿çšããããšã匷ããå§ãããŸãã ãã®ãã©ã°ã€ã³ã«ã¯ãã€ãã£ãåºåã¯å«ãŸããŠããŸãããããã©ã°ã€ã³ããµããŒããããã©ãŒãããã¯æ£ããå®è£
ãããŠããããšãããã£ãŠããŸãã
Googleã«ã¯ãããåªããåºåçµ±åã®æ§ç¯ã«åãçµãã§ãããšã³ãžãã¢ãããŸãããçŸåšãé²è¡äžã®ãããžã§ã¯ãã§ãã
native_ads
ããã³Flutterã®PlatformView
ãŠã£ãžã§ããã䜿çšããŠåºåã衚瀺ããããšãããã®ä»ã®ãã©ã°ã€ã³ã«é¢ããç°¡åãªæ³šæäºé ïŒã³ãã¥ããã£ã®äººã ããããã®ã¿ã€ãã®ããšã«åãçµãã§ããã®ãèŠãã®ã¯çŽ æŽãããããšã§ãããç»é¢ã«åºåã衚瀺ããããšã¯ãã¢ãã€ã«åºåãã©ã°ã€ã³ã®ä»äºã®äžéšã«ãããªãããšã誰ããç¥ã£ãŠããå¿ èŠããããŸãã åºåã¯ã衚瀺ã«å ããŠãã€ã³ãã¬ãã·ã§ã³ã®è¿œè·¡ãã¯ãªãã¯ã®åŠçãMRAIDãAdChoicesã®é 眮ãã¹ãã 察çæ©èœãäžé£ã®ä¿¡å·å šäœã®æ£ç¢ºãªæž¬å®ãªã©ãåŠçããå¿ èŠããããŸãã
ãã€ãã£ãåºåçšã®Googleã®ãã©ã°ã€ã³ããŸã ãªãçç±ã¯ããã¹ãŠãæ£ããååŸããã®ãéåžžã«é£ããããã§ããæ£ããèšå®ããªããšãåçã倱ãããããçµ±èšãäžæ£ç¢ºã«ãªã£ãããAdMobããã®ä»ã®ã¢ã«ãŠã³ãã«ããã¢ã«ãŠã³ãã®åæ¢ãçºçãããããå¯èœæ§ããããŸãã仲ä»ãããåºåãããã¯ãŒã¯ã
ãã®ãããä»ã®ãšãã
firebase_admob
ãã©ã°ã€ã³ã䜿çšããããšã匷ããå§ãããŸãã ãã®ãã©ã°ã€ã³ã«ã¯ãã€ãã£ãåºåã¯å«ãŸããŠããŸãããããã©ã°ã€ã³ããµããŒããããã©ãŒãããã¯æ£ããå®è£ ãããŠããããšãããã£ãŠããŸããGoogleã«ã¯ãããåªããåºåçµ±åã®æ§ç¯ã«åãçµãã§ãããšã³ãžãã¢ãããŸãããçŸåšãé²è¡äžã®ãããžã§ã¯ãã§ãã
説æããŠãããŠããããšãïŒ
native_ads
ããã³Flutterã®PlatformView
ãŠã£ãžã§ããã䜿çšããŠåºåã衚瀺ããããšãããã®ä»ã®ãã©ã°ã€ã³ã«é¢ããç°¡åãªæ³šæäºé ïŒã³ãã¥ããã£ã®äººã ããããã®ã¿ã€ãã®ããšã«åãçµãã§ããã®ãèŠãã®ã¯çŽ æŽãããããšã§ãããç»é¢ã«åºåã衚瀺ããããšã¯ãã¢ãã€ã«åºåãã©ã°ã€ã³ã®ä»äºã®äžéšã«ãããªãããšã誰ããç¥ã£ãŠããå¿ èŠããããŸãã åºåã¯ã衚瀺ã«å ããŠãã€ã³ãã¬ãã·ã§ã³ã®è¿œè·¡ãã¯ãªãã¯ã®åŠçãMRAIDãAdChoicesã®é 眮ãã¹ãã 察çæ©èœãäžé£ã®ä¿¡å·å šäœã®æ£ç¢ºãªæž¬å®ãªã©ãåŠçããå¿ èŠããããŸãã
ãã€ãã£ãåºåçšã®Googleã®ãã©ã°ã€ã³ããŸã ãªãçç±ã¯ããã¹ãŠãæ£ããååŸããã®ãéåžžã«é£ããããã§ããæ£ããèšå®ããªããšãåçã倱ãããããçµ±èšãäžæ£ç¢ºã«ãªã£ãããAdMobããã®ä»ã®ã¢ã«ãŠã³ãã«ããã¢ã«ãŠã³ãã®åæ¢ãçºçãããããå¯èœæ§ããããŸãã仲ä»ãããåºåãããã¯ãŒã¯ã
ãã®ãããä»ã®ãšãã
firebase_admob
ãã©ã°ã€ã³ã䜿çšããããšã匷ããå§ãããŸãã ãã®ãã©ã°ã€ã³ã«ã¯ãã€ãã£ãåºåã¯å«ãŸããŠããŸãããããã©ã°ã€ã³ããµããŒããããã©ãŒãããã¯æ£ããå®è£ ãããŠããããšãããã£ãŠããŸããGoogleã«ã¯ãããåªããåºåçµ±åã®æ§ç¯ã«åãçµãã§ãããšã³ãžãã¢ãããŸãããçŸåšãé²è¡äžã®ãããžã§ã¯ãã§ãã
Mobile Ads SDKã¯ãã€ã³ãã¬ãã·ã§ã³ã®è¿œè·¡ãã¯ãªãã¯ã®åŠçãã¹ãã 察çæ©èœãããã³äžé£ã®ä¿¡å·å šäœã®æ£ç¢ºãªæž¬å®ãæ åœããŠããŸããã ããã¯ããã€ãã£ãã®Androidã¢ããªãäœæãã次ã®æé ã«åŸã£ãŠããå Žåãšã©ã®ããã«ç°ãªããŸããïŒ https ://developers.google.com/admob/android/native/start
native_ads
ããã³Flutterã®PlatformView
ãŠã£ãžã§ããã䜿çšããŠåºåã衚瀺ããããšãããã®ä»ã®ãã©ã°ã€ã³ã«é¢ããç°¡åãªæ³šæäºé ïŒ
ã³ãã¥ããã£ã®äººã ããããã®ã¿ã€ãã®ããšã«åãçµãã§ããã®ãèŠãã®ã¯çŽ æŽãããããšã§ãããç»é¢ã«åºåã衚瀺ããããšã¯ãã¢ãã€ã«åºåãã©ã°ã€ã³ã®ä»äºã®äžéšã«ãããªãããšã誰ããç¥ã£ãŠããå¿ èŠããããŸãã åºåã¯ã衚瀺ã«å ããŠãã€ã³ãã¬ãã·ã§ã³ã®è¿œè·¡ãã¯ãªãã¯ã®åŠçãMRAIDãAdChoicesã®é 眮ãã¹ãã 察çæ©èœãäžé£ã®ä¿¡å·å šäœã®æ£ç¢ºãªæž¬å®ãªã©ãåŠçããå¿ èŠããããŸãã
ãã€ãã£ãåºåçšã®Googleã®ãã©ã°ã€ã³ããŸã ãªãçç±ã¯ããã¹ãŠãæ£ããååŸããã®ãéåžžã«é£ããããã§ããæ£ããèšå®ããªããšãåçã倱ãããããçµ±èšãäžæ£ç¢ºã«ãªã£ãããAdMobããã®ä»ã®ã¢ã«ãŠã³ãã«ããã¢ã«ãŠã³ãã®åæ¢ãçºçãããããå¯èœæ§ããããŸãã仲ä»ãããåºåãããã¯ãŒã¯ã
ãã®ãããä»ã®ãšããfirebase_admob
ãã©ã°ã€ã³ã䜿çšããããšã匷ããå§ãããŸãã ãã®ãã©ã°ã€ã³ã«ã¯ãã€ãã£ãåºåã¯å«ãŸããŠããŸãããããã©ã°ã€ã³ããµããŒããããã©ãŒãããã¯æ£ããå®è£ ãããŠããããšãããã£ãŠããŸãã
Googleã«ã¯ãããåªããåºåçµ±åã®æ§ç¯ã«åãçµãã§ãããšã³ãžãã¢ãããŸãããçŸåšãé²è¡äžã®ãããžã§ã¯ãã§ããMobile Ads SDKã¯ãã€ã³ãã¬ãã·ã§ã³ã®è¿œè·¡ãã¯ãªãã¯ã®åŠçãã¹ãã 察çæ©èœãããã³äžé£ã®ä¿¡å·å šäœã®æ£ç¢ºãªæž¬å®ãæ åœããŠããŸããã ããã¯ããã€ãã£ãã®Androidã¢ããªãäœæãã次ã®æé ã«åŸã£ãŠããå Žåãšã©ã®ããã«ç°ãªããŸããïŒ https ://developers.google.com/admob/android/native/start
éèŠãªã®ã¯ããã©ãããã©ãŒã ãã¥ãŒã«ã¯å¯äœçšãããããã€ãã£ããã©ãããã©ãŒã ã§çŽæ¥è¡šç€ºãããåãåºåãšã¯ç°ãªãåäœãããå¯èœæ§ããããšããããšã§ãã
ããšãã°ãç¹å®ã®æéã®èŠèŽçã衚瀺ããããšãã«åºåã®å¯èŠæ§ãã«ãŠã³ããããå Žåã§ãã
åºåã®æåã®ãã¯ã»ã«ã衚瀺ããããã€ãã£ããšãã¡ã¿ãŒã§åãããã«ã«ãŠã³ããããããšã100ïŒ
確信ããŠããŸãããïŒ
æå³ããªãç°å¢ã§åºåã䜿çšãããšãGoogleãç°è°ãå±ããå¯èœæ§ããããŸãã ç¹ã«ããã圌ãã®ããžãã¹ã¢ãã«ã«çŽæ¥åœ±é¿ãäžããããšã
å°ãªããšãã°ã¬ãŒãŸãŒã³ã§ãã
å¥ã®èšãæ¹ãããã°ãFlutterãã¢ãã€ã«åºåã衚瀺ããããã«äœæããããã©ã°ã€ã³ã¯ãåºåSDKã®æ©èœã劚ããªãããšãä¿èšŒã§ããå¿ èŠããããŸããããã¯é£ããããšã§ãã ããã«å ããŠãæåéã誰ãã®ç掻ã«è²¬ä»»ãè² ãå¯èœæ§ã®ãããã©ã°ã€ã³ã®éçºã«äŒŽããã¬ãã·ã£ãŒãããããã©ã°ã€ã³ããªãªãŒã¹ããåã«ãã©ã°ã€ã³ãå åºã«ããããšãããã«éèŠã§ããããããããŸãã
ãããã¯ãã¹ãŠããµãŒãããŒãã£ã®ãã€ãã£ãåºåãã©ã°ã€ã³ã«é¢ããå ¬æ£ãªç¹ã§ãã Googleããããè¯ããœãªã¥ãŒã·ã§ã³ãåŸãã次第ãã¢ããªãæŽæ°ããŸãã
ç§ã¯ãã¥ãŒã¹ãã£ãŒãã¢ããªã«åãçµãã§ããŸãããæçš¿ã«ãã€ãã£ãåºåããã¬ã³ãããŠé 眮ããå¿ èŠããããŸãã ãããã£ãŠããããããã©ã°ã€ã³ã¢ãããŒãã§ã¯ãªãã¢ããªã«è¿œå ããå¿ èŠããããŸãããã®ããããªã¹ãç»é¢ã¯åºåãåŠçããããã«Swift / Kotlinã«å®è£ ãããåºåã®ãªãæ®ãã®ç»é¢ã¯Flutterã«å®è£ ã§ããŸãã
flutter_admob
ãã©ã°ã€ã³ã¯çŸåšãAdmobããªã·ãŒã«ããæšå¥šãããªããããŒå®è£
ãå°ãªããšã1ã€å®è£
ããŠããããšãææããŠãããŸãã
ãã¢ããªã³ã³ãã³ããšéè€ããåºåããå®è£ ããŠãããšæããŸããã»ãšãã©ã®Androidã®å Žåããã¢ããªã¢ã€ãã ã«æãŸããåºåããå®è£ ããŠããŸãã ããã§é¢é£æ å ±ãèŠã€ããããšãã§ããŸãã
ããã¯èšã£ãŠããäžèšã®ããã«ãã°ã¬ãŒãŸãŒã³ãã«ããã®ããAdmobããªã·ãŒããŒãžèªäœã«ãããªã·ãŒã«å¯ŸããŠããšèšèŒãããŠãããã®ãçŽæ¥å®è£ ããã®ããäœãææªãªã®ãã¯ããããŸããð€
å°ãªããšãçŸåšã®é²æç¶æ³ã®é²æã¬ããŒããå ¥æããå¿ èŠããããšæããŸãã 競äºã®æ¿ããã¢ããªã±ãŒã·ã§ã³ã®ä»æ¥ã§ã¯ãå°ãªããšã競äºã«è¿œãã€ãã®ã¯çŽ æŽãããããšã§ãã
ç»é¢äžã®ãããŒãªãŒããŒã¬ã€ã¯ãç¹ã«çŸãããã©ãã¿ãŒUI / UXãšçµã¿åããããšã_éåžžã«å«ãª_ããã«èŠããŸãã
åºåã䜿ã£ãŠã¢ããªãåçåããããã®åŒ·åãªãœãªã¥ãŒã·ã§ã³ãã§ãããŸã§ã¯ãå°èŠæš¡ãªã¢ããªéçºè ãFlutterãé¿ãã倧ããªçç±ã«ãªãã®ã§ã¯ãªãããšæããŸãã æŠå¿µå®èšŒãšããŠè»œéã¢ããªãäœæããããšã¯1ã€ã®ããšã§ãããäžè²«ããåºååçãããããããã®ããã¯ããªããã°ãçŸå®ã®äžçã§ã¯äœ¿çšäŸãéããããåªããå æ²¢ã®ããããŒã«ã«ãããŸããã ãããåªå ããããŸã§2幎è¿ãåŸ ã¡ãŸãã
ãã€ãã£ãåºåãæ°æ¥åã«è¿œå ãããããã§ãïŒ https ïŒ//github.com/FirebaseExtended/flutterfire/pull/169
æ°æ¥åã«ãã€ãã£ãåºåãè¿œå ãããããã§ãïŒ FirebaseExtended / flutterfireïŒ169
圌ãããããè¿œå ããã®ã¯æ¬åœã«çŽ æŽãããããšã§ãã çŽ æŽãããä»äºã®äººïŒ
ãã ããããã§ãããã¥ãŒéå±€å
ã«é
眮ããããšã¯ã§ããŸããã
ç§ã®ç解ã§ã¯ããã¥ãŒãäžãããªãŒããŒã¬ã€ãšããŠãããã¢ããããshow
ã¡ãœãããããããŸããã
MainActivity.javaã§ã¯ãªãMainActivity.ktããããŸãã
ãã€ãã£ãåºåã䜿çšã§ããŸããïŒ æ¹æ³ïŒ
Androidã ãã®ããã§ããïŒ
Androidã ãã®ããã§ããïŒ
IOSã®ãã€ãã£ãåºåãè¿œå ãããŠããããã§ãhttps://github.com/FirebaseExtended/flutterfire/pull/2106
ãããããã¥ãŒéå±€å ã«é 眮ã§ããŸããïŒ
äžãããã¥ãŒããªãŒããŒã¬ã€ãšããŠãããã¢ããããshowã¡ãœãããããªãããã§ããããã«ããããã€ãã£ãåºåãšããŠã¯ããªã圹ã«ç«ããªããªããŸãã
ç§ã¯ãããããã®èŠç¹ã§ãããšèããŸããããããªããã°ããã¯åãããã«åœ¹ã«ç«ããªãã§ãã
ããã«ã€ããŠäœãé²å±ã¯ãããŸããïŒ
確èªã§ããŸãããããã¯æåéããAndroidã¬ã€ã¢ãŠãããã®ã¿ã«ã¹ã¿ãã€ãºå¯èœãªãããŒåºåã§ãã
ãã©ãããã©ãŒã ãã¥ãŒã䜿çšããŠããªãå ŽåãçŸåšã®å®è£ ãåºåãã¥ãŒã®è¡šç€ºãã©ã®ããã«åŠçãããã¯å®éã«ã¯ããããŸããã
ãã©ãã¿ãŒãã¥ãŒã®äžã«Androidãã¥ãŒ/iOSUIViewããã€ãã£ãã§è¡šç€ºããŸããïŒ
ã€ã³ã¿ãŒã¹ãã£ã·ã£ã«ã®æ°ããã¢ã¯ãã£ããã£ãäœæããŸããïŒ
誰ããç§ã«ãããã³ãŒãã®ã©ãã§è¡ãããŠããã®ãæããŠããããŸããïŒ
ãã©ãã¿ãŒãŠã£ãžã§ããã®äžã«åºåããªãŒããŒã¬ã€ããŸãã åºåã¯ãã©ãã¿ãŒã®äžéšã§ã¯ãããŸãã
ãŠã£ãžã§ããã®éå±€ãããã£ãŠããŠã£ãžã§ããã«ãããåã蟌ãããšã¯ã§ããŸããã äŸ
ãªã¹ããã¥ãŒ
2020幎4æ30æ¥æšææ¥ãååŸ10æ32å[email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
çŸåšã®å®è£ ãã®è¡šç€ºãã©ã®ããã«åŠçãããã¯å®éã«ã¯ããããŸãã
ãã©ãããã©ãŒã ãã¥ãŒã䜿çšããŠããªãå Žåã¯ãåºåãã¥ãŒããã©ãã¿ãŒãã¥ãŒã®äžã«ãã€ãã£ãã®Androidãã¥ãŒ/iOSUIViewã衚瀺ãããŸããïŒ
誰ããç§ã«ãããã³ãŒãã®ã©ãã§è¡ãããŠããã®ãæããŠããããŸããïŒ
â
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/flutter/flutter/issues/12114#issuecomment-621980272 ã
ãŸãã¯è³Œèªã解é€ãã
https://github.com/notifications/unsubscribe-auth/AESIMECDHHOREM7OCD6UC63RPGVIVANCNFSM4D3FBARA
ã
ãããæ¬åœã«ãããªãããããã¹ãŠã®ãã€ã³ãã¯äœã§ããïŒ
ãã€ãã£ãåºåãååšããæãäžè¬çã§èªç¶ãªå Žæã¯ãªã¹ããã¥ãŒå ã§ããããããäžå¯èœãªå Žåãã©ã®ãããªäŸ¡å€ãè¿œå ãããŸããïŒ
æ£ç¢ºã«ã¯ãèŠç¹ã¯ããããåã蟌ã¿ããŠã£ãžã§ããããªãŒã§ã«ã¹ã¿ãã€ãºããããšã§ãã ãã®ãããã¢ããªã®ã¹ã¿ã€ã«ã«åãããããšãã§ããŸãã ããã¯æåéããã€ãã£ãåºåã®èŠç¹ã§ãã
ããã«ã€ããŠäœãé²å±ã¯ãããŸããïŒ
ãã€ãã£ãåºåã ãã§ãªãããââããŒåºåããŠã£ãžã§ããããªãŒã«çµ±åããå¿ èŠããããŸãã ãã®ãŠã£ãžã§ãããå°ã䜿çšããåŸãã¢ããªã§ãããŒãã£ã³ã°ãããŒãæäœããã®ãããã«é£ããããå®æããŸããã ãããã¯ãã¢ããªãã¡ãã¥ãŒããªã¹ããã¥ãŒãäžéšã®ãã€ã¢ãã°ãiOSã®ãµãŒãã§ã¹ãªã©ã®å€ãã®èŠèŠèŠçŽ ã«å¹²æžããŸãããããã¯ãç¹å®ã®çš®é¡ã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯é©ããŠããŸããã éåžžã®ãŠã£ãžã§ãããããŒãå¿ èŠã§ãã
ãã©ãã¿ãŒãŠã§ãã®AdSenseãæ€èšããŠãã ãã
FlutterããŒã ã¯ãåãåã£ã芪æã®æ°ã«å¿ããŠåé¡ã«åªå
é äœãä»ãããšè¿°ã¹ãŠããŸãïŒãã®åé¡ã¯çŸåšãã¬ãå
šäœã§4äœã«ã©ã³ã¯ãããŠããŸãïŒãäžæ¹ããã®åé¡ã¯P6ãšã©ãã«ä»ããããŠããããæ©èœãŸãã¯ãã°ããæå³ããŸãã察åŠããå¯èœæ§ã¯äœãããšè¿°ã¹ãã
åºåãä»ããŠã¢ãã€ã«ã¢ããªãç°¡åãã€ã·ãŒã ã¬ã¹ã«åçåããæ¹æ³ãæäŸããããšã¯ãã©ã®ãã¬ãŒã ã¯ãŒã¯ã®åºæ¬æ©èœã§ããããŸãããFlutterã®å Žåã¯ããã§ã¯ãªãããã§ãã
@ kf6gpeããã«å ãåœãŠãŠããã ããŸãããïŒ
ãã®ãã±ããã«æ·»ä»ãããŠãããããžã§ã¯ãã芳å¯ããŸãã
ããšã³ã·ã¹ãã -ãããã³ã€ã³ãã«ã¯ãPlatformViewsã®ããã®ããããããå«ãŸããŠããŸããããã¯ãåºåã®ããŒãå®è£
ãåŸãããªãçç±ã説æããŠããå¯èœæ§ããããŸãã
FlutterããŒã ã¯ãæåã«PlatformViewsã®ïŒæ©èœãšããã©ãŒãã³ã¹ïŒãæ¹åããŠããããã€ãã£ãåºåSDKãæžãçŽããã«äœ¿çšããããšãæãã§ããŸããïŒ
ããã§ããªããéææ§ãé«ããŠããã ããã°å¹žãã§ãã
ã¿ããªãç§ãã¡ã¯äœãããŠããã®ã§ããïŒ ã»ãšãã©ã®äººãæžå¿µããŠããéããããã¯åºæ¬çã«ç«1ã®ãã°ã§ãã ããã¯ç§ã®ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠå®å šãªã·ã§ãŒããããŒã®ããã«èŠããŸãããã®æ©èœã3幎以äžã«ããã£ãŠæ©èœããŠããŠã倧ããªé²æ©ããªãããšã1æ¥äžèªãã åŸãä»ã®ã¯ãã¹ãã©ãããã©ãŒã ãã¬ãŒã ã¯ãŒã¯ãæ€èšããŠããŸãã ç§ã¯ããã€ãã£ãåºåãæ å ã®ãããŒãšããŠè¡šç€ºããæ©èœãé²æ©ããŠãããšã¯èããŠããŸããã ãã€ãã£ãåºåãåã蟌ãããå°ãªããšããã©ãã¿ãŒãŠã£ãžã§ããã«ãã€ãã£ãåºåããªãŒããŒã¬ã€ããæ©èœãå¿ èŠã§ããããããªããšãä»ã®ç¹ã§ã¯çŽ æŽããããã©ãããã©ãŒã ãç¶ç¶ããã€ã³ã»ã³ãã£ãããããŸããã
ããã¯ç§ãã¡ãæãã§ãããã®ã§ã¯ãªããAdmobã®ãã€ãã£ãåºåã§ã¯ãªãããšã¯ããã£ãŠããŸãããæ©èœããã®ã§ã圹ç«ã€ãããããŸããã
FacebookãªãŒãã£ãšã³ã¹ãããã¯ãŒã¯ã®ãã€ãã£ãåºåçšã®ããã±ãŒãžããããAndroidãšiOSã®äž¡æ¹ã§ãã¹ããããŠããŸãæ©èœããŠããŸãã
@jebwatson-ãããèŠãŠãã ããhttps://pub.dev/packages/admob_flutterã AdMobãšFlutterã®å®è£ ã«é¢ããŠããããŸã§ã®ãšããããã以äžã®éžæè¢ã¯ãããŸããã
https://pub.dev/packages/native_adsã䜿çšããŠããŸã
ç§ããããåŸ ã£ãŠããŸãã ãã©ãã¿ãŒãã¥ãŒã«åãããŠAdMobãããŒãã€ã³ã©ã€ã³ã§è¡šç€ºãããã ãã§ãã ãã©ãã¿ãŒã¢ããªã®äžã«ãããŒã衚瀺ããã®ã¯éãããã®ãã©ãããã©ãŒã ã®ç®çå šäœãæãªããŸãã
https://pub.dev/packages/native_adsã䜿çšããŠããŸã
ç§ã®æžå¿µã¯ããããã°ã¬ãŒãŸãŒã³ã§ãããšããããšã§ãã
ã°ãŒã°ã«ããããã®ããã«èšèšãããŠããªãåºåãœãªã¥ãŒã·ã§ã³ã䜿çšããã¢ããªã±ãŒã·ã§ã³ããããã¯ããå¯èœæ§ããããŸãã
çŸåšããµãŒãããŒãã£ã®ã©ã€ãã©ãªããã©ãã¿ãŒãŠã£ãžã§ããããªãŒã®äžéšãšããŠãã€ãã£ãåºåã衚瀺ããããã«äœ¿çšã§ããå¯äžã®ãœãªã¥ãŒã·ã§ã³ïŒäŸïŒListViewïŒã¯ãããããAndroidView
ãšUiKitView
ã䜿çšããŠãã€ãã£ãã®Androidãã¥ãŒãšiOSãã¥ãŒãåã蟌ãããšã§ãã Flutter Docsã«ãããšãããã¯ã³ã¹ãã®ãããæäœã§ãããåé¿ããå¿
èŠããããŸãããã®çµæãã¹ã¯ããŒã«äžã«å€§å¹
ãªé
延ãçºçããŸãã
ãããããã©ãã¿ãŒããŒã ããã©ãã¿ãŒãŠã£ãžã§ããããªãŒã®äžéšãšããŠã®ãã€ãã£ãåºåã®å®è£ ãé ãããŠããçç±ã§ãããã©ãã¿ãŒã«ãã€ãã£ããã¥ãŒãåã蟌ãããã®ããè¯ããããé«éãªæ¹æ³ããã®ä»ã®æ¹åãåŸ ã£ãŠããããã§ãã
ããããAndroidãiOSã«äŸåããã«ãAdMobïŒãã€ãã£ãåºåïŒããã©ãã¿ãŒ/ããŒãã§å®å šã«å®è£ ããããšã¯å¯èœã§ã¯ãªãã§ããããïŒ
ãã©ãã¿ãŒãªã¹ããã¥ãŒã§ãã€ãã£ãåºåããµããŒãããã®ã¯å¿ æ»ã§ãã ããŒã ããã€ãã£ãåºåããã©ãã¿ãŒã§äœ¿çšã§ããææã«ã€ããŠã®ããããçš®é¡ã®ã¿ã€ã ã©ã€ã³ã圹ç«ã¡ãŸãã
AdMobã«ãããã€ãã£ãåºåãå®è£ ãããµãŒãããŒãã£ã®ãã©ã°ã€ã³ã¯ãããããããŸãã äºçŽ°ãªåé¡ã§éçºè ãçŠæ¢ããããšã§Googleãæªåé«ãããšãç¥ã£ãŠããã®ã§ãç§ã¯ãããã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããããšãæããŠããŸãã ç§ã¯ããã®ãã¡ãŒã¹ãããŒãã£ã®å®è£ ã楜ãã¿ã«ããŠããŸãã ã¿ã€ã ã©ã€ã³ãæããŠããã ããŸããïŒ
ãã®æ©èœã®ããŒã¿ãµããŒããæ¬æ¥çºè¡šãããŸããã®ã§ãçæ§ã«æå ±ã§ãã
Flutterã§ã®ã€ã³ã©ã€ã³ãããŒããã³ãã€ãã£ãåºåãã©ãŒãããã®ãµããŒã
çŸåšãããã¯ã¯ããŒãºãããŒã¿çã§ãããæ¬çªã¢ããªã§ãã®æ©èœã䜿çšããæºåãã§ããŠããå Žåã¯ãåå ãç³ã蟌ãããšã匷ããå§ãããŸãã ãã¹ãŠãé 調ã«é²ãã§ãããšä»®å®ãããšã2021幎åé ã«ãããããåºãå ¬éããäºå®ã§ãã
ãã®æ©èœã®ããŒã¿ãµããŒããæ¬æ¥çºè¡šãããŸããã®ã§ãçæ§ã«æå ±ã§ãã
Flutterã§ã®ã€ã³ã©ã€ã³ãããŒããã³ãã€ãã£ãåºåãã©ãŒãããã®ãµããŒãçŸåšãããã¯ã¯ããŒãºãããŒã¿çã§ãããæ¬çªã¢ããªã§ãã®æ©èœã䜿çšããæºåãã§ããŠããå Žåã¯ãåå ãç³ã蟌ãããšã匷ããå§ãããŸãã ãã¹ãŠãé 調ã«é²ãã§ãããšä»®å®ãããšã2021幎åé ã«ãããããåºãå ¬éããäºå®ã§ãã
ããã¯çŽ æŽãããâ€ïžã§ãã ããŒã¿ããã°ã©ã ã«ç³ã蟌ãã§ããæ°æ¥ãçµã¡ãŸããã è¿äºãç±å¿ã«åŸ ã£ãŠããŸãâš
@timsneath
ãã©ãã¿ãŒã¢ããªãFirebaseã«äŸåããã«ç°¡åã«åçåã§ããããã«ãããã®åãçµã¿ã«ãšãŠãæºè¶³ããŠããŸã
ãŸããåãåªåã
æåã«_flutterweb_seoããã¬ã³ããªãŒã«ãã次ã«adSenseã«ãµããŒããè¿œå ããŸã
Flutterã§ãµããŒããããŠãããã¹ãŠã®ãã©ãããã©ãŒã éã«ããçšåºŠã®_ããªãã£_ãæããã
ããŒã¿ããã°ã©ã ã«ãå¿åããŸããã 誰ããå¿çãåãåããŸãããïŒ
æãåèã«ãªãã³ã¡ã³ã
å床ã¢ã¯ãã£ãåããŸãã ïŒ8098ã¯ããããŒãšã€ã³ã¿ãŒã¹ãã£ã·ã£ã«ã®ãµããŒãã®ã¿ã远跡ããããã«å¶éãããŠããŸããã
Admobãã€ãã£ãåºåã®ãµããŒããéèŠãªå Žåã¯ããã®ãã°ã®äžçªäžã®ã³ã¡ã³ãã§[è³æ]ãã¯ãªãã¯ããŠãããã«ãæ祚ãããããšãæ€èšããŠãã ããã