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

Ahm*_*ınç 3 admob react-native react-native-firebase ios14

谷歌AdMob最近宣布为iOS 14+做准备。需要AppTrackingTransparency权限。但是,对于通过rnfirebase使用 AdMob 的 React Native 开发人员来说,还没有路线图。我的react-native项目目前依赖于react-native-firebase版本v6.7.1:

"dependencies": {
    "@react-native-firebase/admob": "^6.7.1",
    "@react-native-firebase/app": "^6.7.1",
    ...
Run Code Online (Sandbox Code Playgroud)

我只是在我的应用程序中使用InterstitialAdand BannerAd

import { InterstitialAd, TestIds, AdEventType, 
    BannerAd, BannerAdSize} from '@react-native-firebase/admob';
Run Code Online (Sandbox Code Playgroud)

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

Ahm*_*ınç 6

为了进行此更新,应遵循多个步骤:

\n

更新react-native-firebase依赖项

\n

首先,您应该将您的react-native-firebase依赖项更新package.json到最新版本,因为有一个预先请求“ Google Mobile Ads SDK 7.64.0或更高版本”:

\n
"@react-native-firebase/admob": "^11.3.2",\n"@react-native-firebase/app": "^11.3.2",\n
Run Code Online (Sandbox Code Playgroud)\n

然后运行npm installyarn install命令。

\n

添加react-native-permissions依赖

\n

其次,您应该添加一个react-native-permissions依赖项package.json,以便稍后您将使用此依赖项来检查和请求AppTrackingTransparency权限:

\n
"react-native-permissions": "^3.0.2",\n
Run Code Online (Sandbox Code Playgroud)\n

然后运行npm installyarn install命令。

\n

更新信息.plist

\n

然后,您应该将Admob 的准备 iOS 14+ 文档中解释的新必需的NSUserTrackingUsageDescription键和值以及信息添加到您的SKAdNetworkItemsInfo.plist文件中:

\n
<key>NSUserTrackingUsageDescription</key>\n<string>This identifier will be used to deliver personalized ads to you.</string>\n<key>SKAdNetworkItems</key>\n<array>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>cstr6suwn9.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>4fzdc2evr5.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>2fnua5tdw4.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>ydx93a7ass.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>5a6flpkh64.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>p78axxw29g.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>v72qych5uu.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>c6k4g5qg8m.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>s39g8k73mm.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>3qy4746246.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>3sh42y64q3.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>f38h382jlk.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>hs6bdukanm.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>prcb7njmu6.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>wzmmz9fp6w.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>yclnxrl5pm.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>4468km3ulz.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>t38b2kh725.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>7ug5zh24hu.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>9rd848q2bz.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>n6fk4nfna4.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>kbd757ywx3.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>9t245vhmpl.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>2u9pt9hc89.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>8s468mfl3y.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>av6w8kgt66.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>klf5c3l5u5.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>ppxm28t8ap.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>424m5254lk.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>uw77j35x4d.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>e5fvkxwrpn.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>zq492l623r.skadnetwork</string>\n    </dict>\n    <dict>\n        <key>SKAdNetworkIdentifier</key>\n        <string>3qcr597p9d.skadnetwork</string>\n    </dict>\n</array>\n
Run Code Online (Sandbox Code Playgroud)\n

更新 Podfile

\n

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

\n
permissions_path = \'../node_modules/react-native-permissions/ios\'\n\npod \'Permission-AppTrackingTransparency\', :path => "#{permissions_path}/AppTrackingTransparency"\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

最后,您应该添加检查和请求APP_TRACKING_TRANSPARENCY在 AdMob 广告请求之前向您的反应原生代码添加检查和请求权限:

\n
import {check, request, PERMISSIONS, RESULTS} from \'react-native-permissions\';\n\n//......\n\ncheck(PERMISSIONS.IOS.APP_TRACKING_TRANSPARENCY)\n  .then((result) => {\n    switch (result) {\n      case RESULTS.UNAVAILABLE:\n        console.log(\'This feature is not available (on this device / in this context)\');\n        break;\n      case RESULTS.DENIED:\n        console.log(\'The permission has not been requested / is denied but requestable\');\n        request(PERMISSIONS.IOS.APP_TRACKING_TRANSPARENCY).then((reqResult) => {\n            switch (reqResult) {\n                case RESULTS.GRANTED:\n                    console.log(\'The permission request is granted\');\n                    // now you can make ad requests\n                    break;\n                case RESULTS.BLOCKED:\n                    console.log(\'The permission request is denied and not requestable anymore\');\n                    break;\n            }\n        });\n        break;\n      case RESULTS.LIMITED:\n        console.log(\'The permission is limited: some actions are possible\');\n        break;\n      case RESULTS.GRANTED:\n        console.log(\'The permission is granted\');\n        // now you can make ad requests\n        break;\n      case RESULTS.BLOCKED:\n        console.log(\'The permission is denied and not requestable anymore\');\n        break;\n    }\n  })\n  .catch((error) => {\n    // \xe2\x80\xa6\n  });\n
Run Code Online (Sandbox Code Playgroud)\n

如果您从或方法调用中获得RESULTS.GRANTED结果,则可以发出广告请求。checkrequest

\n

最后注意:在运行之前不要忘记执行clean所有这些更改后的 Xcode 项目。

\n