init
This commit is contained in:
237
INSTALLATION.md
Normal file
237
INSTALLATION.md
Normal file
@@ -0,0 +1,237 @@
|
||||
# Installation Guide
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- React Native >= 0.68
|
||||
- iOS >= 13.0
|
||||
- Android minSdkVersion >= 21
|
||||
- Node.js >= 14
|
||||
- CocoaPods (for iOS)
|
||||
|
||||
## Step-by-Step Installation
|
||||
|
||||
### 1. Install the Package
|
||||
|
||||
```bash
|
||||
npm install react-native-braintree-dropin-turbo
|
||||
# or
|
||||
yarn add react-native-braintree-dropin-turbo
|
||||
```
|
||||
|
||||
### 2. iOS Setup
|
||||
|
||||
#### 2.1 Install Pods
|
||||
|
||||
```bash
|
||||
cd ios && pod install && cd ..
|
||||
```
|
||||
|
||||
#### 2.2 Configure Apple Pay (Optional)
|
||||
|
||||
If you want to use Apple Pay, add the following to your `Info.plist`:
|
||||
|
||||
```xml
|
||||
<key>com.apple.developer.in-app-payments</key>
|
||||
<array>
|
||||
<string>merchant.your.merchant.identifier</string>
|
||||
</array>
|
||||
```
|
||||
|
||||
You also need to enable Apple Pay in your Apple Developer account:
|
||||
1. Go to Certificates, Identifiers & Profiles
|
||||
2. Select your App ID
|
||||
3. Enable "Apple Pay"
|
||||
4. Create a Merchant ID
|
||||
|
||||
#### 2.3 Swift Bridging (if needed)
|
||||
|
||||
If you don't have a Swift bridging header yet, Xcode will create one automatically when you build the project.
|
||||
|
||||
### 3. Android Setup
|
||||
|
||||
#### 3.1 Update MainActivity
|
||||
|
||||
Open `android/app/src/main/java/[your-package]/MainActivity.kt` (or `.java`) and add:
|
||||
|
||||
**For Kotlin:**
|
||||
|
||||
```kotlin
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import com.braintreedroptinturbo.RNBraintreeDropInModule
|
||||
|
||||
class MainActivity : FragmentActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
RNBraintreeDropInModule.initDropInClient(this)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**For Java:**
|
||||
|
||||
```java
|
||||
import android.os.Bundle;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import com.braintreedroptinturbo.RNBraintreeDropInModule;
|
||||
|
||||
public class MainActivity extends FragmentActivity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
RNBraintreeDropInModule.initDropInClient(this);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 3.2 Update build.gradle (if needed)
|
||||
|
||||
Make sure your `android/build.gradle` has:
|
||||
|
||||
```gradle
|
||||
buildscript {
|
||||
ext {
|
||||
minSdkVersion = 21
|
||||
compileSdkVersion = 33
|
||||
targetSdkVersion = 33
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 3.3 Configure Google Pay (Optional)
|
||||
|
||||
Add to `android/app/src/main/AndroidManifest.xml`:
|
||||
|
||||
```xml
|
||||
<application>
|
||||
...
|
||||
<meta-data
|
||||
android:name="com.google.android.gms.wallet.api.enabled"
|
||||
android:value="true" />
|
||||
</application>
|
||||
```
|
||||
|
||||
### 4. New Architecture (Optional)
|
||||
|
||||
This library supports the New Architecture out of the box. To enable it:
|
||||
|
||||
#### 4.1 iOS
|
||||
|
||||
In `ios/Podfile`:
|
||||
|
||||
```ruby
|
||||
ENV['RCT_NEW_ARCH_ENABLED'] = '1'
|
||||
```
|
||||
|
||||
Then run:
|
||||
```bash
|
||||
cd ios && pod install && cd ..
|
||||
```
|
||||
|
||||
#### 4.2 Android
|
||||
|
||||
In `android/gradle.properties`:
|
||||
|
||||
```properties
|
||||
newArchEnabled=true
|
||||
```
|
||||
|
||||
### 5. Rebuild Your App
|
||||
|
||||
```bash
|
||||
# iOS
|
||||
npx react-native run-ios
|
||||
|
||||
# Android
|
||||
npx react-native run-android
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### iOS Issues
|
||||
|
||||
**Pod Install Fails:**
|
||||
```bash
|
||||
cd ios
|
||||
pod repo update
|
||||
pod install --repo-update
|
||||
```
|
||||
|
||||
**Swift Version Mismatch:**
|
||||
Make sure your project is using Swift 5.0+. Check in Xcode:
|
||||
Project Settings → Build Settings → Swift Language Version
|
||||
|
||||
**Apple Pay Not Working:**
|
||||
- Verify your Merchant ID in Apple Developer Console
|
||||
- Check that the Merchant ID matches in your Info.plist
|
||||
- Ensure Apple Pay is enabled for your App ID
|
||||
|
||||
### Android Issues
|
||||
|
||||
**FragmentActivity Error:**
|
||||
Make sure your MainActivity extends `FragmentActivity` instead of `ReactActivity`.
|
||||
|
||||
**Gradle Build Fails:**
|
||||
Try:
|
||||
```bash
|
||||
cd android
|
||||
./gradlew clean
|
||||
cd ..
|
||||
```
|
||||
|
||||
**Drop-In Client Not Initialized:**
|
||||
Ensure you called `RNBraintreeDropInModule.initDropInClient(this)` in `MainActivity.onCreate()`.
|
||||
|
||||
**Google Pay Not Working:**
|
||||
- Add the Google Pay meta-data to AndroidManifest.xml
|
||||
- Verify your Google Pay Merchant ID
|
||||
- Test with a test card in sandbox mode first
|
||||
|
||||
### Common Issues
|
||||
|
||||
**"No Client Token" Error:**
|
||||
Make sure you're passing a valid client token from your server.
|
||||
|
||||
**"User Cancellation" on Android:**
|
||||
This is normal when the user closes the Drop-In UI. Handle it gracefully in your error handling.
|
||||
|
||||
**TypeScript Errors:**
|
||||
Make sure you're using TypeScript 4.0+ and have proper type definitions installed.
|
||||
|
||||
## Verification
|
||||
|
||||
To verify the installation, create a simple test:
|
||||
|
||||
```typescript
|
||||
import BraintreeDropIn from 'react-native-braintree-dropin-turbo';
|
||||
|
||||
// Test device data collection (doesn't require UI)
|
||||
const testInstallation = async () => {
|
||||
try {
|
||||
const deviceData = await BraintreeDropIn.collectDeviceData('sandbox_test_token');
|
||||
console.log('✅ Installation successful!', deviceData);
|
||||
} catch (error) {
|
||||
console.error('❌ Installation issue:', error);
|
||||
}
|
||||
};
|
||||
|
||||
testInstallation();
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
- Get your Braintree client token from your server
|
||||
- Review the [API Reference](./README.md#api-reference)
|
||||
- Check out the [Example App](./example/App.tsx)
|
||||
- Test in sandbox mode before production
|
||||
|
||||
## Support
|
||||
|
||||
For issues:
|
||||
1. Check this guide
|
||||
2. Review closed issues on GitHub
|
||||
3. Open a new issue with:
|
||||
- React Native version
|
||||
- OS and version
|
||||
- Error messages
|
||||
- Steps to reproduce
|
||||
Reference in New Issue
Block a user