顯示具有 Google 標籤的文章。 顯示所有文章
顯示具有 Google 標籤的文章。 顯示所有文章

2023年8月26日 星期六

[iOS][Swift][App] 整合 Google AdMob 到 iOS App

Photo by Ketut Subiyanto

我在整合 Google AdMob 時卡了超久,Google 了也沒找到很直接能解決的方法,想說在此做個記錄,讓以後的我能照著做,也讓遇到類似問題的人能夠有個解法,以下是參考 官方說明 做的

第一動,Import the Mobile Ads SDK

先在 xocde project 的根目錄下(.xcodeproj 檔案的路徑)執行 pod init,這樣就能產生一個 Podfile 檔案,若沒安裝 cocopods 可以 follow 這裡 安裝,然後再按照 這裡 的做法,加

pod 'Google-Mobile-Ads-SDK'

在 Podfile 檔案,然後執行下面,記得此時要將 xcode 關閉

pod install --repo-update

這邊我遇到一個問題

[!] Unable to determine the platform for the `your project name` target.

解決方法是將 Podfile 檔案裡的第二行 uncomment 就可以了,完成後如下


platform :ios, '9.0'


第二動,Update your Info.plist

遇到的第一個問題是,我找不到 Info.plist 檔案

參考 這邊,原來 info.plist 變成了 project 設定裡的 tab

然後將 GADApplicationIdentifier (1個) 和 SKAdNetworkItems (49個) 輸入(如下圖紅框)


第三動,建立 banner structure 來呼叫顯示廣告
import GoogleMobileAds
struct BannerVC: UIViewControllerRepresentable {
    var bannerID: String
    var width: CGFloat

    func makeUIViewController(context: Context) -> UIViewController {
        let view = GADBannerView(adSize: GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width))

        let viewController = UIViewController()
        view.adUnitID = bannerID
        
        view.rootViewController = viewController
        viewController.view.addSubview(view)

#if false
        /* Simulator */
        let request = GADRequest()
        let extras = GADExtras()
        extras.additionalParameters = ["suppress_test_label": "1"]
        request.register(extras)
        view.load(request)
#else
        /* Real device */
        view.load(GADRequest())
#endif
        
        return viewController
    }

    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
}

struct Banner: View {
    var bannerID: String
    var width: CGFloat

    var size: CGSize {
        return GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width).size
    }

    var body: some View {
        BannerVC(bannerID: bannerID, width: width)
            .frame(width: size.width, height: size.height)
    }
}
struct ContentView: View {
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundColor(.accentColor)
            Text("Hello, world!")
        }
        .padding()
        Banner(bannerID: "ca-app-pub-3940256099942544/2934735716", width: UIScreen.main.bounds.width)
    }
} 

實作方式如上,這邊用的 bannerID 是測試使用的,請參考這邊,順利的話就可以看到下面的畫面

Simulator

若不想在 Simulator 上看到 "Test mode" 的字樣,將上面程式的 /* Simulator */ 上的 if false 改成 if true,就可將之移除如下圖,這功能在你上架 app 提供截圖時會用到
若是跑在實機上的話,上述的程式記得改成 if false,會看到如下畫面
Note

若想 build 在 Mac 上會遇到 No such module 'GoogleMobileAds' 的 error,這個問題我也想知道解答,歡迎提供給我,謝謝

環境

  • Mac Mini M1
  • Xcode Version 14.3 (14E222b)
  • iPhone 12 Pro Max (16.6)

Reference

  • COCOAPODS getting-start (link)
  • Mobile Ads SDK (iOS) Get Started (link)

2017年1月25日 星期三

[VR] Google Opens The Floodgates To Let More Developers Submit Daydream Apps

開放才是正確的做法,畢竟很多 copycats 讓 play store 品質變差,但總比沒有應用程式能下載來的好吧,現階段看來,做為平台供應商的角色,應該是要先推量,再推品質的才對,所以我覺得這應該就是原本 Google 想做的事,只是時間到了沒的問題。況且應用程式的品質差的話,都會被消費者發現的,他們根本躲不掉,會被淘汰的。

原文翻譯:
Google 降低門檻讓更多開發者能上架 Daydream 應用程式

Google 在一開始幾個月,只和幾組特定開發者一起開發 Daydream 相容的應用程式,這樣的方式讓 Google 能很密切的和夥伴合作精心製作應用程式,但這也很嚴重的降低了能在 Google Play 商店上能被 Daydream 頭戴顯示器下載的 Daydream 應用程式數量。

從今天開始會有些改變,Google 敞開了門,讓所有的開發者只要是順著 Google 定出來的規定,都能夠上架他們的應用程式,這個改變能讓手機 VR 有巨大的變化,反觀 Samsung 最近公佈他們賣了 5 百萬台 Gear VR,而 Google 卻才剛開始起步,非常多的 Daydream 應用程式只獲得很少數的安裝。

有很多軟體能夠選擇,對消費者來說是好事,而且 Daydream ecosystem 將能夠支援其他的頭戴顯示器手機,所有的裝置應該都要能互相相容,若應用程式在手機上不好用,頂多是讓你覺得不方便,但是 VR 應用程式若有問題,會讓你感到不舒服。另外,太多應用程式的話,會讓你較難找到好品質的,因為會出現太多的 copycats,這在手機應用程式上已經是個普遍的問題了。

我們很好奇想知道是什麼造成了這個決定,因為 Google 目前的方法,的確是有很多厲害的開發者無法上架應用程式到 Daydream,但同樣地,可能也有很多的不是很正規的開發者也在等待上架他們不完整的應用程式,我們可能也會看到很多 Cardboard 或 Gear VR 應用程式在 Daydream 上架。

無論好壞,我們都會持續追踨 Daydream VR 應用程式帶來的浪潮。


原文出處:

2016年12月15日 星期四

[VR] Oculus Launches Developer Preview Of Its WebVR Browser, ‘Carmel’, On Gear VR

當你想做一個網頁時,你得考慮幾種使用方式,在電腦上看的,在手機上看的,現在還要考慮在 VR 裡看的,front-end engineer 又多一種技術要學習了,應該有人開始在計劃一種工具,是一次能把電腦、手機和 VR 三種不同平台上的網頁一次搞定才對。

對於文中提到,這是針對 2017 年中能實現的規格去做的設計,和到時候有多少人使用是不同的,我相信目前為止都還是廠商練功時間,畢竟現在有 VR 頭載顯示器的人還是不多,去將網頁 VR 化絕對是無法增加營收,只是跟風跟酷而己,重點就跟目前 VR 能否有 3A 遊戲相同,在 WebVR 上能否有殺手級應用或解決目前痛點的方法,否則這也都會是曇花一現。

原文翻譯:
Oculus 發表在 Gear VR 上的 WebVR 瀏覽器開發者預覽版本 Carmel 

在 10 月的 Oculus Connect 3 上,Oculus 透露了他們擁有自己的 VR web 瀏覽器 Carmel,現在,你可以體驗到了。

Carmel 目前可以在 Gear VR 上開發者預覽版本的  Gallery App 中用到,如同他的名字,目前的版本是設計來讓開發者能透過 WebVR API 讓使用者能透過瀏覽器體驗 VR,比較不是給一般使用者用的,這裡面包含了多組範例去展示它到底能在網頁上做到哪些 VR 功能,並且有文件讓開發者協助建立自己的 content。

目前處於極早期的階段,你甚至還無法使用位址欄。

Carmel 終究將能讓你透過 web 存取傳統的 2D content 和體驗 VR,但現在是將重點放在體驗 VR 。

Oculus 也同時發表了 Carmel Starter Kit,你可以下載或若你有相容的瀏覽器你也能在網路上直接瀏覽,它指導開發者如何讓 content 在頭載顯示器中執行,如何在網頁中使用 Gear VR 的觸控板,如何在 VR 中瀏覽 HTML5,還有如何在網頁中顯示 360 度 content。Oculus 的 WebVR 網頁中也有一些範例告訴你還能如何運用這些 API。

Oculus blog 中也公佈了這次的版本,是基於主要瀏覽器產商相信能在 2017 年中能實現的規格來設計,同時他們也提到這一步是跟夥伴們一起走的,包含 Google, Microsoft 和 Mozilla,想要帶給大家的是網頁技術的關鍵里程碑。


Rift 應該也要能在之後支援 Carmel,Oculus 也持續建置他們的 WebVR 介面 React VR framework。

原文出處:
http://uploadvr.com/carmel-launches-developer-preview-gear/

2016年11月27日 星期日

[AI] Making it easier for anyone to start exploring A.I.

一直以來都對人工智慧和機器學習有興趣的我,看到這篇文章真的是很開心,因為 Google 又進一步讓想玩這些東西的人能更容易開始了,我大概看了兩三個實驗,覺得都蠻有趣的,而且他們也都有把他們的程式 open source 出來,有時間的話,真的可以好好玩一下,我也基於某個實驗想說來玩看看,但卡在 Google Cloud Platform 的使用上出了問題,我想是我對它不熟吧。

原文翻譯:
輕鬆開始人工智慧

因為人工智慧又變的受重視,非常多人想要重拾機器學習技術,我們想幫助大家,無論你是工程師、業餘愛好者、學生、或你只是好奇都行,但有時候剛開始時會讓你感到不容易上手。

這也是我們開發出 A.I. Experiements 的原因,這個網站展示了簡單的實驗,它能讓大家能隨意的把玩這些新科技或是利用這些資源來打造你自己的實驗。

這些實驗展示了機器學習如何去了解各種事情,像是影像、圖畫、語言、聲音等等,這些實驗是由不同興趣的人做的,像是網頁開發者、音樂家、遊戲開發者、鳥類聲音愛好者和資料視覺化等等,大家都來展示如何利用他們的想法利用機器學習。

我們也想讓程設計計師更容易的來做實驗,很多實驗用的工具都是大家皆可使用的,像是 Cloud Vision APITensorflow、還有從不同機器學習社群裡提供的程式庫,開發者用影片來跟大家解說實驗是如何運作的,而且也會 open source 讓你也能使用,去看一下 A.I. Experiments 玩玩大家的實驗或是送出你自己的實驗吧。

若你也想找更多的機器學習靈感的話,也可以去看這些 Google Arts & Culture 上的新實驗

原文出處:
https://developers.googleblog.com/2016/11/making-it-easier-for-anyone-to-start-exploring-ai.html