Slide 1

Slide 1 text

ΞυϑϦ͘ΜSDKΛSwift4Ͱ૊ΈࠐΉ ΠϯλʔεςΠγϟϧ ωΠςΟϒ ಈըΠϯλʔεςΠγϟϧ ಈըωΠςΟϒ ಈըϦϫʔυ όφʔ *OΞυϑϦδϡΫ

Slide 2

Slide 2 text

ΞυϑϦ͘Μ4%,ͷಋೖ IUUQTBEGVSJLVOKQBEGVSJLVO ·ͣ͸ΞΧ΢ϯτొ࿥

Slide 3

Slide 3 text

ΠϯλʔεςΠγϟϧ ωΠςΟϒ όφʔ

Slide 4

Slide 4 text

ΞυϑϦ͘Μ4%,ͷಋೖ μ΢ϯϩʔυϖʔδ͔Β4%,Λμ΢ϯϩʔυ ޿ࠂ࿮Λ࡞ͬͯɺ޿ࠂ*%Λൃߦ͢Δɻ

Slide 5

Slide 5 text

ΞυϑϦ͘Μ4%,ͷಋೖ ϓϩδΣΫτʹ4%,Λ௥Ճ 4%,Λυϥοάˍυϩοϓɻ

Slide 6

Slide 6 text

ΞυϑϦ͘Μ4%,ͷಋೖ ϑϨʔϜϫʔΫΛ௥Ճ

Slide 7

Slide 7 text

ΞυϑϦ͘Μ4%,ͷಋೖ ϒϦοδϔομͷ௥Ճ 0CKFDUJWF$ͷద౰ͳΫϥ εΛ௥Ճɻ͋ͱͰফ͢ɻ

Slide 8

Slide 8 text

ΞυϑϦ͘Μ4%,ͷಋೖ ϒϦοδϔομͷ௥Ճ ίϯύΠϧઃఆʹϒϦοδ ϔομ͕௥Ճ͞ΕΔɻ

Slide 9

Slide 9 text

όφʔʗΠϯλʔεςΠγϟϧ

Slide 10

Slide 10 text

όφʔʗΠϯλʔεςΠγϟϧ޿ࠂͷදࣔ ϒϦοδϔομ΁هೖ #import #import

Slide 11

Slide 11 text

func makeBannerAd() { let adfurikunView = AdfurikunView(frame: CGRect(x: 0, y: 0, width: 320, height: 50)) self.view.addSubview(adfurikunView) adfurikunView.appID = “޿ࠂID” adfurikunView.transitionDulation = 0.5 adfurikunView.testModeEnable() // ςετϞʔυ adfurikunView.startShowAd() adfurikunView.center = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height - 25) } όφʔ޿ࠂͷදࣔ 6*7JFX$POUSPMMFSʹදࣔ͢Δ૝ఆ

Slide 12

Slide 12 text

όφʔ޿ࠂͷදࣔ

Slide 13

Slide 13 text

ΠϯλʔεςΠγϟϧ޿ࠂͷදࣔ 6*7JFX$POUSPMMFSʹදࣔ͢Δ૝ఆ var adfurikunInter: AdfurikunPopupView! func makeInterstisialAd() { self.adfurikunInter = AdfurikunPopupView() self.adfurikunInter.appID = “޿ࠂID” self.adfurikunInter.testModeEnable() // ςετϞʔυ self.adfurikunInter.setSchedule(1) self.adfurikunInter.preloadAd() } @IBAction func showInterstisialAd(_ sender: Any) { self.view.addSubview(self.adfurikunInter) self.adfurikunInter.center = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height/2) self.adfurikunInter.preloadShowAd() }

Slide 14

Slide 14 text

ΠϯλʔεςΠγϟϧ޿ࠂͷදࣔ 6*7JFX$POUSPMMFSʹදࣔ͢Δ૝ఆ

Slide 15

Slide 15 text

ωΠςΟϰ

Slide 16

Slide 16 text

ωΠςΟϒ޿ࠂͷදࣔ ϒϦοδϔομ΁هೖ #import #import

Slide 17

Slide 17 text

ωΠςΟϒ޿ࠂͷදࣔ var adfurikunNative: AdfurikunNativeAd! var nativeLinkURL: URL? //޿ࠂϦϯΫ var imageView: UIImageView! //޿ࠂը૾ var titleLabel: UILabel! //޿ࠂλΠτϧ var textLabel: UILabel! //޿ࠂςΩετ var nativeAdView: UIView! //޿ࠂදࣔϏϡʔ ޿ࠂදࣔ༻ͷϓϩύςΟΛఆٛ

Slide 18

Slide 18 text

ωΠςΟϒ޿ࠂͷදࣔ func nativeAd(size: CGSize) -> UIView { let adView = UIView(frame: CGRect(x: 0, y: 0, width: size.width, height: size.height)) self.nativeAdView = adView adView.backgroundColor = UIColor.white //ը૾ self.imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: size.height, height: size.height)) imageView.contentMode = .scaleAspectFit adView.addSubview(imageView) //λΠτϧ self.titleLabel = UILabel(frame: CGRect(x: size.height + 5.0, y: 0, width: size.width - (size.height + 5.0), height: size.height * 0.3)) titleLabel.numberOfLines = 2 titleLabel.minimumScaleFactor = 0.5 adView.addSubview(titleLabel) //ςΩετ self.textLabel = UILabel(frame: CGRect(x: size.height + 5.0, y: size.height * 0.3, width: size.width - (size.height + 5.0), height: size.height * 0.7)) textLabel.numberOfLines = 4 textLabel.minimumScaleFactor = 0.5 adView.addSubview(textLabel) ޿ࠂදࣔ༻ͷϏϡʔΛ࡞Δ

Slide 19

Slide 19 text

ωΠςΟϒ޿ࠂͷදࣔ self.adfurikunNative = AdfurikunNativeAd(“޿ࠂID”) self.adfurikunNative.delegate = self self.adfurikunNative.getNativeAd() return adView } ޿ࠂදࣔ༻ͷϏϡʔΛ࡞Δ σϦήʔτΛઃఆ AdfurikunNativeAdDelegate

Slide 20

Slide 20 text

ωΠςΟϒ޿ࠂͷදࣔ func apiDidFinishLoading(_ nativeAdInfo: AdfurikunNativeAdInfo, adnetworkKey networkKey: String!) { if let url = URL(string: nativeAdInfo.img_url) { let task = URLSession.shared.dataTask(with: url) { data, response, error in if let d = data, error == nil{ DispatchQueue.main.async { self.imageView.image = UIImage(data: d) //ը૾ self.titleLabel.text = nativeAdInfo.title //λΠτϧ self.textLabel.text = nativeAdInfo.text //ςΩετ //ϦϯΫ if let url = nativeAdInfo.link_url { self.nativeLinkURL = URL(string: url) } //λοϓδΣενϟʔ let tapGesture = UITapGestureRecognizer(target: self.nativeAdView, action: #selector(self.naitiveAdTap(_:))) self.nativeAdView.addGestureRecognizer(tapGesture) } } } task.resume() } } func apiDidFailWithError(_ err: Int32, adnetworkKey: String!) { print("Native Ad error: \(adnetworkKey)=\(err)") } σϦήʔτϝιουͰϦιʔεΛऔಘ ϝΠϯεϨουͰઃఆ AdfurikunNativeAdDelegate λοϓΛݕ஌Ͱ͖ΔΑ͏ʹ ͢Δɻ

Slide 21

Slide 21 text

ωΠςΟϒ޿ࠂͷදࣔ @objc func naitiveAdTap(_ tap: UITapGestureRecognizer) { if let url = self.nativeLinkURL, UIApplication.shared.canOpenURL(url) { UIApplication.shared.open(url, options: [:], completionHandler: { (ok) in AdfurikunNativeAdInfo.makeInstance().recClick() }) } } ޿ࠂΫϦοΫͷ௨஌

Slide 22

Slide 22 text

ωΠςΟϒ޿ࠂͷදࣔ

Slide 23

Slide 23 text

ಈըΠϯλʔεςΠγϟϧ ಈըωΠςΟϒ ಈըϦϫʔυ

Slide 24

Slide 24 text

ΞυϑϦ͘Μಈը4%,ͷಋೖ μ΢ϯϩʔυϖʔδ͔Β4%,Λμ΢ϯϩʔυ ֤ΞυωοτϫʔΫͷઃఆ͸ɺ ͜ͷϚχϡΞϧΛ͝ཡ͍ͩ͘͞ɻ ʢ͜͜Ͱ͸ׂѪ͠·͢ʣ $PDPB1PETΛ࢖͏ํ๏ָ͕ʂ

Slide 25

Slide 25 text

ΞυϑϦ͘Μಈը4%,ͷಋೖ ϓϩδΣΫτʹ4%,Λ௥Ճ 4%,Λυϥοάˍυϩοϓɻ BEOFUXPSLT

Slide 26

Slide 26 text

ΞυϑϦ͘Μ4%,ͷಋೖ ϑϨʔϜϫʔΫΛ௥Ճ

Slide 27

Slide 27 text

ϒϦοδϔομ΁هೖ JNQPSU"%'.PWJF3FXBSE"%'NZ.PWJF3FXBSEI JNQPSU"%'.PWJF3FXBSE"%'NZ.PWJF*OUFSTUJUJBMI JNQPSU"%'.PWJF3FXBSE"%'NZ.PWJF/BUJWFI JNQPSU"%'.PWJF3FXBSE"%'NZ.PWJF/BUJWF"E7JFXI JNQPSU"%'.PWJF3FXBSE"%'NZ.PWJF/BUJWF"E'MFYI JNQPSU"%'.PWJF3FXBSE"%'.PWJF0QUJPOTI ΞυϑϦ͘Μಈը4%,ͷಋೖ

Slide 28

Slide 28 text

ಈըωΠςΟϰ

Slide 29

Slide 29 text

ಈըωΠςΟϒ޿ࠂͷදࣔ var adfurikunMovieNativeView: ADFmyMovieNativeAdView! var videoNativeAdView: UIView! //ಈըωΠςΟϰ޿ࠂදࣔϏϡʔ ޿ࠂදࣔ༻ͷϓϩύςΟΛఆٛ

Slide 30

Slide 30 text

ಈըωΠςΟϒ޿ࠂͷදࣔ if ADFmyMovieNativeAdView.isSupportedOSVersion() { ADFmyMovieNativeAdView.configure(withAppID: “޿ࠂID”) } ॳظԽ ىಈ௚ޙʹ࣮ߦ

Slide 31

Slide 31 text

ಈըωΠςΟϒ޿ࠂͷදࣔ func makeVideoNativeView(size: CGSize) -> UIView { let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height) let adView: UIView = UIView(frame: rect) if ADFmyMovieNativeAdView.isSupportedOSVersion() { self.adfurikunMovieNativeView = ADFmyMovieNativeAdView(appID: “޿ࠂID”, layoutPattern: .default) self.adfurikunMovieNativeView.autoLoad = true self.adfurikunMovieNativeView.loadAndNotify(to: self) } self.videoNativeAdView = adView return adView } ޿ࠂදࣔ༻ͷϏϡʔΛ࡞Δ σϦήʔτΛઃఆ ADFmyMovieNativeAdViewDelegate

Slide 32

Slide 32 text

ಈըωΠςΟϒ޿ࠂͷදࣔ //޿ࠂͷऔಘ੒ޭ func onNativeMovieAdViewLoadFinish(_ appID: String) { if let adv = self.adfurikunMovieNativeView.getAdView() { adv.bounds = CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height) self.addSubview(adv) adv.center = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height / 2) self.adfurikunMovieNativeView.setVideoDelegate(self) self.adfurikunMovieNativeView.playVideo() } } //޿ࠂͷऔಘࣦഊ func onNativeMovieAdViewLoadError(_ error: ADFMovieError, appID: String) { print("ωΠςΟϰ޿ࠂͷऔಘࣦഊ:\(error.errorMessage)") } ಈըͷऔಘ σϦήʔτΛઃఆ ADFmyNativeAdViewVideoDelegate ADFmyMovieNativeAdViewDelegate

Slide 33

Slide 33 text

ಈըωΠςΟϒ޿ࠂͷදࣔ ಈըͷ࠶ੜ֬ೝσϦήʔτ //޿ࠂͷ࠶ੜ։࢝ func onNativeMovieAdViewPlayStart(_ appID: String) { print("޿ࠂͷ࠶ੜ։࢝:\(appID)") } //޿ࠂͷ࠶ੜ׬ྃ func onNativeMovieAdViewPlayFinish(_ appID: String, isVideo: Bool) { print("޿ࠂͷ࠶ੜ׬ྃ:\(appID) isVideo=\(isVideo)") } //޿ࠂͷ࠶ੜࣦഊ func onNativeMovieAdViewPlayFail(_ appID: String, error: ADFMovieError) { print("޿ࠂͷ࠶ੜࣦഊ:\(appID) \(error.errorMessage)") } ADFmyNativeAdViewVideoDelegate

Slide 34

Slide 34 text

ಈըΠϯλʔεςΠγϟϧ

Slide 35

Slide 35 text

ಈըΠϯλʔεςΠγϟϧ޿ࠂͷදࣔ if ADFmyMovieInterstitial.isSupportedOSVersion() { ADFmyMovieInterstitial.initWithAppID(“޿ࠂID”, viewController: self) } if let ad = ADFmyMovieInterstitial.getInstance(“޿ࠂID”, delegate: self) { if ad.isPrepared() { ad.play(withPresenting: self) } } ॳظԽ දࣔ ىಈ௚ޙʹ࣮ߦ σϦήʔτΛઃఆ ADFmyMovieRewardDelegate

Slide 36

Slide 36 text

// ޿ࠂͷදࣔ४උ͕ऴΘͬͨ func adsFetchCompleted(_ isTestMode_inApp: Bool) { } // ޿ࠂͷද͕ࣔ։͔࢝ͨ͠ func adsDidShow(_ adnetworkKey: String) { } // ޿ࠂͷදࣔΛ࠷ޙ·ͰऴΘ͔ͬͨ func adsDidCompleteShow() { } // ಈը޿ࠂ࠶ੜΤϥʔ࣌ͷΠϕϯτ func adsPlayFailed() { } // ޿ࠂΛดͨ࣌͡ͷΠϕϯτ func adsDidHide() { } ಈըΠϯλʔεςΠγϟϧ޿ࠂͷදࣔ σϦήʔτϝιου ADFmyMovieRewardDelegate σϦήʔτͷϓϩτίϧ͸ɺ ಈըϦϫʔυͱಉ͡ʂ ಈըϦϫʔυͷ৔߹ɺ͜ͷσϦήʔτϝιο υ͕ݺ͹Εͨ࣌఺ͰɺใुΛ༩͑Δɻ

Slide 37

Slide 37 text

ಈըϦϫʔυ

Slide 38

Slide 38 text

ಈըϦϫʔυ޿ࠂͷදࣔ ޿ࠂදࣔ༻ͷϓϩύςΟΛఆٛ var adfurikunMovieReward: ADFmyMovieReward!

Slide 39

Slide 39 text

ॳظԽ දࣔ ಈըϦϫʔυ޿ࠂͷදࣔ if ADFmyMovieReward.isSupportedOSVersion() { ADFmyMovieReward.initWithAppID(“޿ࠂID”, viewController: self) self.adfurikunMovieReward = ADFmyMovieReward.getInstance(“޿ࠂID”, delegate: self) } ىಈ௚ޙʹ࣮ߦ if self.adfurikunMovieReward.isPrepared() == true { self.adfurikunMovieReward.play() } else { print("ADF ޿ࠂͷऔಘ͕׬͍ྃͯ͠·ͤΜ") } σϦήʔτΛઃఆ ADFmyMovieRewardDelegate

Slide 40

Slide 40 text

// ޿ࠂͷදࣔ४උ͕ऴΘͬͨ func adsFetchCompleted(_ isTestMode_inApp: Bool) { } // ޿ࠂͷද͕ࣔ։͔࢝ͨ͠ func adsDidShow(_ adnetworkKey: String) { } // ޿ࠂͷදࣔΛ࠷ޙ·ͰऴΘ͔ͬͨ func adsDidCompleteShow() { } // ಈը޿ࠂ࠶ੜΤϥʔ࣌ͷΠϕϯτ func adsPlayFailed() { } // ޿ࠂΛดͨ࣌͡ͷΠϕϯτ func adsDidHide() { } ಈըϦϫʔυ޿ࠂͷදࣔ σϦήʔτϝιου ADFmyMovieRewardDelegate ͜ͷσϦήʔτϝιου͕ݺ͹Εͨ࣌఺Ͱɺ ใुΛ༩͑Δɻ

Slide 41

Slide 41 text

ΞυϑϦ͘ΜSDKΛSwift4Ͱ૊ΈࠐΉ *OΞυϑϦδϡΫ Ҏ্ɺ Ͳ͏΋͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ