Bizarrus
| 30. Aug 2017 | 0 Kommentare

App in die AppStore stellen

Mittlerweile bieten wir eineDiceStep an, in denen UserApps verkauft werden können.

Die API

[code type="js"]const AppStore = (function AppStore(_app) {
	let _instance	= this;
	let _app_id		= '30558139.AppStore';
	let _is_payed	= true;
	let _api		= [
		'mayJoinChannel',
		'mayShowPublicActionMessage',
		'mayShowPublicMessage',
		'onAccountChangedKnuddelAmount',
		'onAccountReceivedKnuddel',
		'onAppEventReceived',
		'onAppStart',
		'onBeforeKnuddelReceived',
		'onEventReceived',
		'onKnuddelReceived',
		'onPrepareShutdown',
		'onPrivateMessage',
		'onPublicActionMessage',
		'onPublicEventMessage',
		'onPublicMessage',
		'onShutdown',
		'onUserDiced',
		'onUserJoined',
		'onUserLeft',
		
		// Other API
		'onKnuddelAccountChanged'
	];
	
	function __constructor() {
		if(!isAppStoreIsInstalled()) {
			KnuddelsServer.getDefaultLogger().error('AppStore is **NOT** installed!');
		}
		
		if(!isPayed()) {
			KnuddelsServer.getDefaultLogger().error('UserApp is **NOT** payed!');
		}
		
		/* Create cloned API */
		_api.forEach(function onAppMethod(_method) {
			if(typeof(_app[_method]) != 'undefined') {
				_instance[_method] = function methodHook() {
					createMethodHook(_method, arguments);
				};
			}
		}.bind(this));
		
		if(typeof(_app.chatCommands) != 'undefined') {
			this.chatCommands = {};
			
			Object.keys(_app.chatCommands).forEach(function onChatCommand(_command) {
				this.chatCommands[_command] = function commandHook(user, parameters, command) {
					createCommandHook(_command, user, parameters, command);
				};
			}.bind(this));
		}
	}
	
	function getAppInfo() {
		var instance	= KnuddelsServer.getAppAccess().getOwnInstance();
		var info		= instance.getAppInfo();
		var developer	= info.getAppDeveloper().getUserId();
		var code		= info.getAppKey();
		
		return developer + '.' + code;
	};
	
	function createMethodHook(_method, args) {
		var user = null;
		
		switch(_method) {
			case 'onUserJoined':
				user = args[0];
			break;
			case 'onAccountReceivedKnuddel':
				user = args[0];
			break;
			case 'onBeforeKnuddelReceived':
				user = args[0];
			break;
			case 'onEventReceived':
				user = args[0];
			break;
			case 'onKnuddelReceived':
				user = args[0];
			break;
		}
		
		if(!isPayed()) {
			if(user != null && user.isChannelOwner()) {
				user.sendPrivateMessage('Du musst die UserApp _' + getAppInfo() + '_ erst _°BB>bezahlen|/AppStore buy:' + getAppInfo() + 'bezahlen|/AppStore buy:' + getAppInfo() + '

Änderungen an der UserApp

Als Kleines Beispiel zeigen wir, was du in deiner UserApp verändern musst, damit diese AppStore-Tauglich wird - Es sind nur wenige Schritte.

Deine original UserApp hat folgenden Code:

  1. var App = (new function AppContainer() {
  2.         this.onUserJoined = function onUserJoined(user) {
  3.                 user.sendPrivateMessage('Willkommen!');
  4.         };
  5.  
  6.         this.chatCommands = {
  7.                 Hallo: function Hallo(user, params) {
  8.                         user.sendPrivateMessage('Hallo Welt!');
  9.                 }
  10.         }
  11. });

Du musst lediglich die AppStore.API.js einbinden und deinen AppContainer mit einem sogenannten "Wrapper" binden:

  1. /* Hier bindest du die AppStore ein */
  2. require('classes/AppStore.API.js');
  3.  
  4. /* Direkt im AppContainer wird eine neue AppStore-Instanz initalisiert */
  5. var App = new AppStore(function AppContainer() {
  6.         this.onUserJoined = function onUserJoined(user) {
  7.                 user.sendPrivateMessage('Willkommen!');
  8.         };
  9.  
  10.         this.chatCommands = {
  11.                 Hallo: function Hallo(user, params) {
  12.                         user.sendPrivateMessage('Hallo Welt!');
  13.                 }
  14.         }
  15. });
Wie du siehst, ist es relativ einfach!

Du setzt lediglich ein new AppStore vor deinen AppContainer.


AppStore Eintrag erstellen

Damit die App auch öffentlich in der AppStore gelistet wird, musst du zu deinen Account gehen. In der linken Navigation findest du eine Übersicht all deiner UserApps, die in der AppStore eingestellt sind.

Hier fügst du eine Beschreibung deiner App hinzu, lädst ein Bild/Icon für deine UserApp hoch und legst den Preis der App fest.

Fragen und Antworten

Kann meine UserApp von jedem installiert werden?

Ja. Die App kann von jedem Nutzer installiert und gestartet werden. Alle Funktionen sind aber vor Freischaltung durch den Zahlungsprozess deaktiviert.

Wie funktioniert die Überweisung?

Wenn ein Nutzer die AppStore installiert hat, bekommt dieser ein Guthaben-Konto. Dieses Konto kann der Nutzer jeder Zeit auffüllen. Bei Zahlung einer App wird dann der gewünschte Betrag von diesem abgezogen und wandert automatisch an uns. Nach Abgabe der Steuer erhälst du dann auf deinem KnuddelAccount die Vergütung. Wichtig dabei ist, dass du mindestens einmal den Channel UserApps betreten haben musst!

Was für Kosten fallen für mich an?

Leider können wir aufgrund der Knuddels-Steuern keine komplette Auszahlung gestatten, da wir dann pro Kauf einen Verlust machen würden. Sofern ein Nutzer deine App kauft, werden automatisch 20% von dem Betrag abgezogen, den wir aufgrund der Steuern einbehalten werden.

Beispiel:

Du bietest die UserApp "Hallo Welt" für 1.000Kn an. Ein Nutzer kauft diese, wovon wir 200Kn (also 20%) aufgrund unserer Kosten einbehalten werden.

0 Kommentare zum Tutorial