首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新rnfirebase admob以支持iOS 14 AppTrackingTransparency

如何更新rnfirebase admob以支持iOS 14 AppTrackingTransparency
EN

Stack Overflow用户
提问于 2021-04-25 14:44:50
回答 1查看 1.2K关注 0票数 2

Google AdMob最近宣布了iOS 14+的制备。有一个AppTrackingTransparency许可的要求。然而,没有针对通过AdMob使用火碱的本地开发人员的路线图。我的react-原生项目目前依赖于react本机-firebase版本v6.7.1:

代码语言:javascript
复制
"dependencies": {
    "@react-native-firebase/admob": "^6.7.1",
    "@react-native-firebase/app": "^6.7.1",
    ...

我只需在我的应用程序中使用InterstitialAdBannerAd

代码语言:javascript
复制
import { InterstitialAd, TestIds, AdEventType, 
    BannerAd, BannerAdSize} from '@react-native-firebase/admob';

要升级我的项目以支持iOS 14+,我的路线图应该是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-25 14:44:50

为了进行这一更新,应该遵循多个步骤:

更新-本机-火基依赖项

首先,您应该将package.json中的依赖项更新为最新版本,因为有一个预请求“GoogleMobileADSSDK7.64.0或更高版本”:

代码语言:javascript
复制
"@react-native-firebase/admob": "^11.3.2",
"@react-native-firebase/app": "^11.3.2",

然后运行npm installyarn install命令。

添加响应-本机权限依赖项

其次,应该将反应-本机权限依赖项添加到package.json中,以便以后使用该依赖项检查和请求AppTrackingTransparency权限:

代码语言:javascript
复制
"react-native-permissions": "^3.0.2",

然后运行npm installyarn install命令。

更新Info.plist

然后,您应该将新需要的NSUserTrackingUsageDescription键&value和SKAdNetworkItems信息添加到Admob对iOS 14+文档的准备文件中,这些信息在Admob对iOS 14+文档的准备上得到了解释:

代码语言:javascript
复制
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
<key>SKAdNetworkItems</key>
<array>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>cstr6suwn9.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>4fzdc2evr5.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>2fnua5tdw4.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>ydx93a7ass.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>5a6flpkh64.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>p78axxw29g.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>v72qych5uu.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>c6k4g5qg8m.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>s39g8k73mm.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>3qy4746246.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>3sh42y64q3.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>f38h382jlk.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>hs6bdukanm.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>prcb7njmu6.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>wzmmz9fp6w.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>yclnxrl5pm.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>4468km3ulz.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>t38b2kh725.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>7ug5zh24hu.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>9rd848q2bz.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>n6fk4nfna4.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>kbd757ywx3.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>9t245vhmpl.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>2u9pt9hc89.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>8s468mfl3y.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>av6w8kgt66.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>klf5c3l5u5.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>ppxm28t8ap.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>424m5254lk.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>uw77j35x4d.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>e5fvkxwrpn.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>zq492l623r.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>3qcr597p9d.skadnetwork</string>
    </dict>
</array>

更新Podfile

然后,应该通过添加以下行来更新PodFile

代码语言:javascript
复制
permissions_path = '../node_modules/react-native-permissions/ios'

pod 'Permission-AppTrackingTransparency', :path => "#{permissions_path}/AppTrackingTransparency"

然后在项目的pod install目录上运行pod install --repo-updatepod install --repo-update命令(您可以在此操作之前删除旧的Pods目录和Podfile.lock文件)。

在您的react本机代码中添加AppTrackingTransparency权限

最后,您应该在您的APP_TRACKING_TRANSPARENCY广告请求之前的某个地方向您的react本机代码添加check & request AdMob权限:

代码语言:javascript
复制
import {check, request, PERMISSIONS, RESULTS} from 'react-native-permissions';

//......

check(PERMISSIONS.IOS.APP_TRACKING_TRANSPARENCY)
  .then((result) => {
    switch (result) {
      case RESULTS.UNAVAILABLE:
        console.log('This feature is not available (on this device / in this context)');
        break;
      case RESULTS.DENIED:
        console.log('The permission has not been requested / is denied but requestable');
        request(PERMISSIONS.IOS.APP_TRACKING_TRANSPARENCY).then((reqResult) => {
            switch (reqResult) {
                case RESULTS.GRANTED:
                    console.log('The permission request is granted');
                    // now you can make ad requests
                    break;
                case RESULTS.BLOCKED:
                    console.log('The permission request is denied and not requestable anymore');
                    break;
            }
        });
        break;
      case RESULTS.LIMITED:
        console.log('The permission is limited: some actions are possible');
        break;
      case RESULTS.GRANTED:
        console.log('The permission is granted');
        // now you can make ad requests
        break;
      case RESULTS.BLOCKED:
        console.log('The permission is denied and not requestable anymore');
        break;
    }
  })
  .catch((error) => {
    // …
  });

然后,如果从RESULTS.GRANTEDrequest方法调用中获得request结果,则可以发出广告请求。

最后注意事项:在运行所有这些更改之后,不要忘记对Xcode项目进行clean

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67254603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档