1.4.3 • Published 8 years ago

react-native-annecy-media v1.4.3

Weekly downloads
1
License
ISC
Repository
github
Last release
8 years ago

Annecy Media SDK for React Native

Install

$ npm i react-native-annecy-media --save

Services, Models and Views

import {
    AnnecyService,
    Offer,
    TrackingView,
} from 'react-native-annecy-media';

AnnecyService

MethodArgumentsNotes
initconfig ObjectInitialize Annecy Media SDK
onScrollnoneTell the SDK, that the user has scrolled a TableView
getOffersonLazyOffersLoaded FunctionReturns a promise that resolves Offers
setRequestIdrequestId StringIf you're not using the getOffers method but your own service, you have to set the requestId manually
sendAndResetViewsnoneIf you're not using the getOffers method but your own service, you have to send and reset views manually

TrackingView

A TrackingView will automatically handle views of your offers. Use it as a wrapper around your offer view.

<TrackingView id={offer.id}>
    <Text>{offer.title}</Text>
</TrackingView>
AttributeTypeNotes
idStringOffer ID

Offer

A Offer model represents a campaign.

KeyTypeExample
attributesObject{color: '#F00'}
costTypeString"cpi", "cpa", "cps"
creditsNumber100
ctaTextString"Finish the task!"
ctaTitleString"Company Name"
idString"foo"
isVisibleBooleantrue
imageUrlString"http://foo.com/bar.png"
payoutNumber10
textString"Finish the task"
titleString"Company Name"
trackingUrlString"http://foo.com/bar.html"
typeStringOffer.TYPE.OFFER

Example

export default class AppView extends Component {
    constructor(props) {
        super(props);

        this._ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
        this.state = {
            isRefreshing: true,
            offers: this._ds.cloneWithRows([])
        };

        AnnecyService.init({
            country: 'US',
            idfaGaid: '00000000-0000-0000-0000-000000000000',
            locale: 'en',
            token: 'annecy-media-token',
            userId: 'foo'
        });
    }

    componentDidMount() {
        this._refreshOffers();
    }

    _refreshOffers() {
        this.setState({isRefreshing: true});

        AnnecyService.getOffers((updatedOffers) => {
            this.setState({offers: this._ds.cloneWithRows(updatedOffers)});
        }).then((offers) => {
            this.setState({
                isRefreshing: false,
                offers: this._ds.cloneWithRows(offers)
            });
        }).catch(() => {
            this.setState({isRefreshing: false});
        });
    }

    _renderRow(offer) {
        if (!offer.isVisible || offer.type !== Offer.TYPE.OFFER) {
            return null;
        }

        return (
            <TrackingView id={offer.id}>
                <YourCustomRow offer={offer} />
            </TrackingView>
        );
    }

    _renderRefreshControl() {
        return (
            <RefreshControl
                refreshing={this.state.isRefreshing}
                onRefresh={this._refreshOffers.bind(this)} />
        );
    }

    render() {
        return (
            <ListView
                dataSource={this.state.offers}
                renderRow={this._renderRow.bind(this)}
                onScroll={() => AnnecyService.onScroll()} // Do not bind!
                refreshControl={this._renderRefreshControl()} />
        );
    }
}
1.4.3

8 years ago

1.4.2

8 years ago

1.4.1

8 years ago

1.4.0

8 years ago

1.3.0

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago