Diskuze: Odměna za sdílení
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 24 zpráv z 24.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Dej to přidání až za ověření jestli to zdílel
Nevím, jak je tvá aplikace dělaná, ale pokud máš to sdílecí tlačítko jako prvek .NET frameworku, tak by se tam dal dát nějaký event navíc. Také by se dalo udělat to v HTML a tlačítkem člověka nejprve poslat na nějakou svou ASP stránku, která by do DB zapsala, že se to opravdu nasdílelo. Nicméně si myslím, že i tyto metody se dají obejít, a tak mě napadá už jen jediná věc a to, že by si appka hlídala, zda už byl odeslán požadavek na nějaký API server dané sociální sítě.
Když si ale vezmu, že když si chci na FB něco sdílet, tak mi nejdříve vyskočí okno, do které můžu přidat dodatečnou zprávu, tak najít nějaké 100% řešení může být docela těžké.
Pokud ti to pomůže, našel jsem něco tady: Stack Overflow
Asi jsem to špatně popsal: Nepotřebuji si přímo ověřit jestli to vážně je odesláno např. na facebooku, nebo na messangeru, ale problém je v tom, že pokud je kliknuto na tlačítko sdílej tak vyskočí takové "okno", kde si mám vybrat v jaké aplikaci to chci sdílet, jenomže za tím oknem se objeví alertdialog, že děkuji za sdílení a za odměnu se dostává 100 korun. Ale každý by si mohl všimnout, že v pozadí už vyskočil alertdialog ve kterém je napsáno získáváte 100 korun a tak by ho to odradilo sdílet aplikaci a okno by zavřel a jen by si vybral těch 100 korun. Proto bych potřeboval, aby okno vyskočilo až poté co si uživatel vybral aplikaci ve které to chce sdílet. Kód:
Intent share = new Intent(Intent.ActionSend);
share.SetType("text/plain");
share.PutExtra(Intent.ExtraSubject, "Stáhni si Clicker!");
share.PutExtra(Intent.ExtraText, "Stáhni si hru Clicker! Je zdarma a zabaví tě když se nudíš. Odkaz ke ztažení zde:");
share.PutExtra(Intent.ExtraTitle, "Stáhni si Clicker!");
StartActivity(Intent.CreateChooser(share, "Sdílej a získej 100 korun zdarma!"));
AlertDialog.Builder dialog = new AlertDialog.Builder(this, AlertDialog.ThemeHoloLight);
dialog.SetCancelable(false)
.SetTitle("Děkuji")
.SetMessage("Děkuji, že jste sdíleli tuto aplikaci, za odměnu dostáváte 100 korun.")
.SetNeutralButton("OK", delegate
{
ZapisPenize(penize + 100, doubleClick, tripleClick, slowTime);
});
dialog.Show();
Pro orientaci ještě pošlu obrázek
Tak to dialogové okno nech otevřít až po tom, co na to tlačítko klikneš.
Však tak to mám. Na Actionbaru mam umistenou ikonku sdileni a kdyz se na ni klikne tak se otevře okno ve kterem se ma vybrat aplikace na sdílení a v pozadi se otevře alertdialog. A to právě že nechci.
Ten alert na pozadí se musí otevřít až po dokončení akce, ne při zobrazení výběru.
Ja si to taky myslel ale otevira se mi v pozadi nekdy dokonce drive než vyjede to okno na vyber aplikace pro sdílení.
Asi je ten alert navázán na špatnou událost
Pokud se klikne na tlacitko sdilet v actionbaru spusti se kod uvedeny výše... nevim proc ale nepracuje to tak jak ma. Neexistuje zpusob jak overit jestli uzivatel uz vybral aplikaci pro sdileni?
Ale ono to pracuje tak, jak má. Jen ten alert dej až po výběru appky
Však tak to mám. Alert se má zobrazit az pote co vyskočí vybraní aplikace, ale bohužel alert z nějakého duvodu vyskočí v pozadí nebo nekdy dokonce az dříve. A jestli jste to myslel tak ze alert vyskoci az pote co se vybere přímo nějaká aplikace pro sdílení, tak to nevím jak se dělá proto jsem napsal zde do fóra.
Ten alert dej až do toho okna s těmi aplikacemi a navaž ho na výběr té aplikace.
Mohl bys mi prosim poslat kod jak to udělat? Nejsem si jisty jak na to.
Okno s aplikacemi volam takto:
StartActivity(Intent.CreateChooser(share, "Sdílej a získej 100 korun zdarma!"));
A typ aplikaci zadavam takto:
share.SetType("text/plain");
Já na android neumím, jen dedukuji podle toho tvého kódu. Máš v té ukázce na konci
dialog.Show();
Tak ten alert dej až na událost uzavření toho dialogu, resp. výběr appky v tom dialogu...
Nemuzes se nejak ptat te sve aplikace, jestli neni jeji okno necim prekryte? Tohle by se mohlo brat jako prekryti, v tom pripade bys mohl zpravu zobrazit, az kdyz tvoje aplikace uz neni prekryta.
// Samozrejme jestli existuje event po zavreni okna sdileni, asi by bylo lepsi pouzit ten, ale ted to na me pusobi dojmem, ze prave nevis, jak se ten event jmenuje (a jestli vubec je)
To je dobry napad ale opet by nekdo mohl zavrit sdileci okno a dostal by odmenu tak i tak. Takze nejlepsi zpusob podle mne bude overit si jestli se jiz kliklo na nejakou aplikaci ve ktere se to bude sdilet, ale to nevim jak se dela a jestli je to vubec mozne.
Co se stane (nebo co se má stát), když uživatel klikne na nějakou "appku" a co se stane, když to jen zavře?
Tohle asi neošetříš. Pamatuji si třeba hru, kde jsem mohl sdílet jeden "článek" který v té hře byl na facebook a za sdílení jste dostali bonus. Bohužel to fungovalo i tak, pokud jsi příspěvek sdílel a nastavil viditelnost "jen já". Takže tohle asi půjde vždycky obejít... :/
S Androidem nedělám, ale po rychlém googlení - https://stackoverflow.com/a/23494967
Dekuji tohle se mi muze hodit, ale je to v jave a ne v c# (ale ty dva jazyky jsou naštěstí celkem podobné). Ale s tim uz si nejak pokusim poradit.
Popravde jsem si nejak nevsiml ze to pises v C#. To delas skrz Xamarin?
To delas skrz Xamarin?
Ano
S Androidem nedělám, ale po rychlém googlení - https://stackoverflow.com/a/23494967
Funguje to tak jak ma ale v alertdiapogu nejsou ikony aplikaci a nevypada to
tak dobre jako to sdileci okno, ale pokud nepujde nic jineho tak to tak asi
udělám.
Chvili jsem googlil a nakonec jsem zjistil ze zjistit jestli na neco uzivatel
klikl v okne pro vyber aplikace nejde, takze pokud to nevymyslim jinak budu
muset ten zpusob pouzit.
Zobrazeno 24 zpráv z 24.