2012-02-29 5 views
15

Sto costruendo un'app per iOS che includerà un IAP con un abbonamento non rinnovo. Apple fornisce questa pepita nella loro overview of IAP:Come supportare più dispositivi con un acquisto in-app non rinnovabile?

Si sono tenuti a fornire le sottoscrizioni non rinnovare a tutti i dispositivi di proprietà dell'utente. Gli abbonamenti non rinnovati non vengono sincronizzati automaticamente su tutti i dispositivi da Store Kit; è necessario implementare questa infrastruttura da soli. Ad esempio, la maggior parte delle sottoscrizioni è fornita da un server esterno; il tuo server dovrebbe implementare un meccanismo per identificare gli utenti e associare gli acquisti di abbonamenti con l'utente che li ha acquistati.

vorrei seguire questa regola: Voglio che i miei utenti siano in grado di sfruttare l'abbonamento che acquistano su un dispositivo su altri dispositivi come bene. Quindi, come posso identificare lo stesso utente su iPhone e iPad? Comprendo che non è possibile utilizzare l'ID Apple e non è possibile fare affidamento su un metodo di registrazione.

Ho appena trovato this question; la risposta data non sembra essere praticabile. Deve esserci qualcosa di più elegante che altri hanno fatto.

+1

Significa che quando si chiama [[SKPaymentQueue defaultQueue] restoreCompletedTransactions] sul dispositivo che non è stato utilizzato per acquistare l'abbonamento in origine, non si ottiene la transazione? –

+1

Per i sottotitoli non rinnovati, è corretto. Devi gestirli da soli. –

risposta

3

Ho un suggerimento dato a me dal Gavin McKenzie, che suona come la soluzione migliore che ho sentito:

Al momento dell'acquisto dell'abbonamento, fare un "codice breve" disponibile per l'utente. Il codice verrebbe anche memorizzato sul server, legato all'account dell'utente. Quando colpiscono Ripristina su un altro dispositivo, richiedi il codice breve dal dispositivo e dall'account originali, quindi legando insieme tali dispositivi.

Gavin ha inoltre suggerito l'uso di questo in un metodo di "accoppiamento" simile a Bluetooth: durante il ripristino, avviare l'accoppiamento sul dispositivo A, che genera il codice funzione e lo invia al server. Il dispositivo B può quindi utilizzare quel codice. Cinque minuti dopo, o quando la schermata di accoppiamento viene chiusa, il codice viene cancellato.

Non sono sicuro di come questo si reggerà se si desidera ripristinare lo stesso dispositivo, ad esempio dopo aver eliminato il telefono e ripristinato. Ma questo sembra un buon inizio.

+1

è stato provato in produzione? Apple accetta questo? – LordT

+0

Qui in ritardo per la festa qui, ma sospetto che questo potrebbe non funzionare --- anche se la persona perde il codice, sei ancora responsabile per il ripristino dell'abbonamento. – CptSupermrkt

+0

Mi è appena capitato di controllarlo. Sì, posso affermare che funziona perfettamente! La mia app è rimasta nello store per un mese e, grazie a due aggiornamenti, è stata approvata. Una differenza rispetto a quanto ho scritto sopra: ho incluso un nome utente oltre al token. Non è sicuro che importi, ma è meglio prevenire che curare ... –

0

Se è possibile rilasciare il supporto per iOS sotto la versione 5.0, è possibile utilizzare iCloud per sincronizzare una coppia chiave-valore tra i dispositivi dell'utente.

+0

È una nuova app, quindi mi sento a mio agio. Ma Apple accetterà iCloud come meccanismo per questo? E se non lo hanno abilitato? –

+0

Non vedo alcun motivo per cui Apple non lo accetti. Tuttavia, se l'utente ha disattivato iCloud, allora sì, sei sfortunato. –

+7

Ho provato questo! A Apple non piaceva. Ho persino fatto appello al comitato di revisione (e dopo alcune settimane) hanno chiamato e ho detto che avevo bisogno di implementare un ** sistema ** username/password opzionale. Quello che avevo fatto era memorizzare un identificatore univoco generato nell'account iCloud dell'utente (e sul mio server). Quando i nuovi dispositivi sono stati avviati, controllerei quell'ID e, se corrispondesse a un utente precedente, estenderei questo dispositivo con gli stessi privilegi. Apple non ha detto che non mi è stato permesso di memorizzare la coppia valore-chiave, solo che non posso farlo al posto di un ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * * * * * * * * – Andrew

0

vedere questo:

http://iphonedevsdk.com/forum/business-legal-app-store/88698-floored-by-new-rejection.html

A quanto pare è possibile richiedere un nome utente/password prima dell'acquisto. È davvero l'unico modo che abbia senso. Un codice può essere condiviso da migliaia di persone, il che è male.

+0

Come molti sostengono in quel thread, richiedere la registrazione prima dell'acquisto è un'esperienza utente discutibile. Preferisco il mio metodo - che funziona benissimo, tra l'altro - di assegnare un token per utente. –

0

Check out Frac.as. Fa una variante dell'abbinamento "short code" suggerito sopra, ma con un po 'di intelligenza integrata per prevenire gli abusi. È un'API SaaS, con un generoso livello gratuito.

Problemi correlati