Wraps SKStoreProductViewController for use in react-native projects
https://github.com/robhogan/react-native-store-view.git
Wraps SKStoreProductViewController to open items in the App Store from within react-native projects.
NB: v2 and v3 require React Native v0.40 or above. Use v1 for React Native <= 0.39
npm install --save react-native-store-viewreact-native linknpm install --save react-native-store-viewpod 'ReactNativeStoreView', :path => '../node_modules/react-native-store-view' to your project's Podfile, modifying the path as necessary.pod installparams is an object with up to four properties, corresponding to SKStoreProductViewController's parameters
iTunesItemIdentifier (number, required)affiliateToken (string, optional, iOS 8.0+)campaignToken (string, optional, iOS 8.0+)providerToken (string, optional, iOS 8.3+)advertisingPartnerToken (string, optional, iOS 9.3+)The module fires events:
loading - Begun loading a product in the background.loaded - Product loaded and ready to present.presenting - presentViewController has been called.presented - presentViewController has finished animating and the store is now in the foreground.dismissing - Either dismiss has been called or the user has pressed Done.dismissed - dismiss has finished animating and the store is gone from view.NativeModules, loading becomes RJHStoreViewManagerLoading etc to avoid conflicts with other modules sharing the global emitter.)
import React, {Component} from "react";
import {Text, View, TouchableHighlight} from "react-native";
import * as StoreViewManager from "react-native-store-view";
class ReactNativeStoreViewExample extends Component {
dismissListener = () => console.log('Store view dismissed');
constructor() {
StoreViewManager.addListener('dismiss', this.dismissListener);
}
componentWillUnmount() {
StoreViewManager.removeListener('dismiss', this.dismissListener);
}
render() {
return (
<View>
<TouchableHighlight onPress={this.onPressButton}>
<Text>
Tap here to open the app store
</Text>
</TouchableHighlight>
</View>
);
}
onPressButton() {
StoreViewManager.loadProductWithParameters({
iTunesItemIdentifier: 364709193 // The only mandatory parameter is a numeric App Store ID. This one is iBooks.
//, affiliateToken: 'string, optional, iOS 8.0+'
//, campaignToken: 'string, optional, iOS 8.0+'
//, providerToken: 'string, optional, iOS 8.3+'
//, advertisingPartnerToken: 'string, optional, iOS 9.3+'
})
.then(() => {
console.log('SKStoreProductViewController successfully loaded the product over the net, but is not yet displaying anything');
StoreViewManager.presentViewController();
})
.then(() => {
console.log('SKStoreProductViewController is now modal. When it is dismissed, we\'ll return to this view.');
})
.catch((err) => {
console.error(err);
});
}
}
See the ReactNativeStoreViewExample project for more.
SKStoreProductViewController is not supported for use in a simulator environment, and so neither is this module. You'll need to test your application using a real device.