-
-
Notifications
You must be signed in to change notification settings - Fork 153
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(ios): add ios config scripts missed in previous commit
6c1f4d4 should have had these
- Loading branch information
Showing
2 changed files
with
159 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
#!/usr/bin/env bash | ||
# | ||
# Copyright (c) 2016-present Invertase Limited & Contributors | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this library except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# | ||
set -e | ||
|
||
_MAX_LOOKUPS=2; | ||
_SEARCH_RESULT='' | ||
_RN_ROOT_EXISTS='' | ||
_CURRENT_LOOKUPS=1 | ||
_PROJECT_ABBREVIATION="RNGoogleAds" | ||
_JSON_ROOT="'react-native-google-ads'" | ||
_JSON_FILE_NAME='app.json' | ||
_JSON_OUTPUT_BASE64='e30=' # { } | ||
_CURRENT_SEARCH_DIR=${PROJECT_DIR} | ||
_PLIST_BUDDY=/usr/libexec/PlistBuddy | ||
_TARGET_PLIST="${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}" | ||
_DSYM_PLIST="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist" | ||
|
||
# plist arrays | ||
_PLIST_ENTRY_KEYS=() | ||
_PLIST_ENTRY_TYPES=() | ||
_PLIST_ENTRY_VALUES=() | ||
|
||
function setPlistValue { | ||
echo "info: setting plist entry '$1' of type '$2' in file '$4'" | ||
${_PLIST_BUDDY} -c "Add :$1 $2 '$3'" $4 || echo "info: '$1' already exists" | ||
} | ||
|
||
function getJsonKeyValue () { | ||
if [[ ${_RN_ROOT_EXISTS} ]]; then | ||
ruby -e "require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']" | ||
else | ||
echo "" | ||
fi; | ||
} | ||
|
||
function jsonBoolToYesNo () { | ||
if [[ $1 == "false" ]]; then | ||
echo "NO" | ||
elif [[ $1 == "true" ]]; then | ||
echo "YES" | ||
else echo "NO" | ||
fi | ||
} | ||
|
||
echo "info: -> ${_PROJECT_ABBREVIATION} build script started" | ||
echo "info: 1) Locating ${_JSON_FILE_NAME} file:" | ||
|
||
if [[ -z ${_CURRENT_SEARCH_DIR} ]]; then | ||
_CURRENT_SEARCH_DIR=$(pwd) | ||
fi; | ||
|
||
while true; do | ||
_CURRENT_SEARCH_DIR=$(dirname "$_CURRENT_SEARCH_DIR") | ||
if [[ "$_CURRENT_SEARCH_DIR" == "/" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi; | ||
echo "info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file." | ||
_SEARCH_RESULT=$(find "$_CURRENT_SEARCH_DIR" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | head -n 1) | ||
if [[ ${_SEARCH_RESULT} ]]; then | ||
echo "info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT" | ||
break; | ||
fi; | ||
_CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1)) | ||
done | ||
|
||
if [[ ${_SEARCH_RESULT} ]]; then | ||
_JSON_OUTPUT_RAW=$(cat "${_SEARCH_RESULT}") | ||
_RN_ROOT_EXISTS=$(ruby -e "require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]" || echo '') | ||
|
||
if [[ ${_RN_ROOT_EXISTS} ]]; then | ||
_JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('"'${_SEARCH_RESULT}'"').read())['${_JSON_ROOT}'])))' || echo "e30=") | ||
fi | ||
|
||
_PLIST_ENTRY_KEYS+=("google_ads_json_raw") | ||
_PLIST_ENTRY_TYPES+=("string") | ||
_PLIST_ENTRY_VALUES+=("$_JSON_OUTPUT_BASE64") | ||
|
||
# config.delay_app_measurement_init | ||
_DELAY_APP_MEASUREMENT=$(getJsonKeyValue "$_JSON_OUTPUT_RAW" "delay_app_measurement_init") | ||
if [[ $_DELAY_APP_MEASUREMENT == "true" ]]; then | ||
_PLIST_ENTRY_KEYS+=("GADDelayAppMeasurementInit") | ||
_PLIST_ENTRY_TYPES+=("bool") | ||
_PLIST_ENTRY_VALUES+=("YES") | ||
fi | ||
|
||
# config.ios_app_id | ||
_IOS_APP_ID=$(getJsonKeyValue "$_JSON_OUTPUT_RAW" "ios_app_id") | ||
if [[ $_IOS_APP_ID ]]; then | ||
_PLIST_ENTRY_KEYS+=("GADApplicationIdentifier") | ||
_PLIST_ENTRY_TYPES+=("string") | ||
_PLIST_ENTRY_VALUES+=("$_IOS_APP_ID") | ||
fi | ||
else | ||
_PLIST_ENTRY_KEYS+=("google_ads_json_raw") | ||
_PLIST_ENTRY_TYPES+=("string") | ||
_PLIST_ENTRY_VALUES+=("$_JSON_OUTPUT_BASE64") | ||
echo "warning: A ${_JSON_FILE_NAME} file was not found, whilst this file is optional it is recommended to include it to auto-configure services." | ||
fi; | ||
|
||
echo "info: 2) Injecting Info.plist entries: " | ||
|
||
# Log out the keys we're adding | ||
for i in "${!_PLIST_ENTRY_KEYS[@]}"; do | ||
echo " -> $i) ${_PLIST_ENTRY_KEYS[$i]}" "${_PLIST_ENTRY_TYPES[$i]}" "${_PLIST_ENTRY_VALUES[$i]}" | ||
done | ||
|
||
for plist in "${_TARGET_PLIST}" "${_DSYM_PLIST}" ; do | ||
if [[ -f "${plist}" ]]; then | ||
|
||
# paths with spaces break the call to setPlistValue. temporarily modify | ||
# the shell internal field separator variable (IFS), which normally | ||
# includes spaces, to consist only of line breaks | ||
oldifs=$IFS | ||
IFS=" | ||
" | ||
|
||
for i in "${!_PLIST_ENTRY_KEYS[@]}"; do | ||
setPlistValue "${_PLIST_ENTRY_KEYS[$i]}" "${_PLIST_ENTRY_TYPES[$i]}" "${_PLIST_ENTRY_VALUES[$i]}" "${plist}" | ||
done | ||
|
||
# restore the original internal field separator value | ||
IFS=$oldifs | ||
else | ||
echo "warning: A Info.plist build output file was not found (${plist})" | ||
fi | ||
done | ||
|
||
echo "info: <- ${_PROJECT_ABBREVIATION} build script finished" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
module.exports = { | ||
dependency: { | ||
platforms: { | ||
android: { | ||
packageImportPath: 'import io.invertase.googleads.ReactNativeGoogleAdsPackage;', | ||
}, | ||
ios: { | ||
scriptPhases: [ | ||
{ | ||
name: '[RNGoogleAds] Configuration', | ||
path: './ios_config.sh', | ||
execution_position: 'after_compile', | ||
input_files: ['$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)'], | ||
}, | ||
], | ||
}, | ||
}, | ||
}, | ||
}; |