AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Hat Jemand schonmal mit TestFairy herumgespielt ?

Hat Jemand schonmal mit TestFairy herumgespielt ?

Ein Thema von Rollo62 · begonnen am 11. Mai 2016 · letzter Beitrag vom 13. Mai 2016
Antwort Antwort
Seite 1 von 2  1 2   
Rollo62

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#1

Hat Jemand schonmal mit TestFairy herumgespielt ?

  Alt 11. Mai 2016, 16:07
Hallo Leute,

siehe oben.
Hier ist der Link dazu.

Das ist erstmal ein kostenloser Account, und kann TestFlight etc. ersetzen.
Das sieht ganz gut aus, unter Android funktioniert es,
unter iOS soll es wohl auch, aber für IOS müsste man noch Libraries einbinden damit Videos aufgenommen und
die volle Info da ist.

Ich habe nuch die folgenden Probleme damit:

Android:
- Die VideoMitschnitte werden nicht gemacht, es wird nur das StartupLogo gezeigt.
Aber dafür sieht man die gelben "Clicks" wo man hingetouch't hat.

- Jedenfalls kommen die Logs und Infos vom Tester-Gerät, CPUs Speicher, etc.
Das ist schonmal nicht schlecht.

- Wie bekomme ich auch die Videomitschnitte unter Rx10.1 hin ?

iOS:
- Das funktioniert zur Installation (ohne AppStore), und läuft auch gut.

- Nur leider kommen keine Daten, nur manuelle BugReports im Moment.

- Die SDK müsste mit in die App für InApp Systeminfo ond Videoaufnahme reinkompiliert werden.
Hat das schonmal jemand für IOS hinbekommen ?


Ansonsten scheint das echt fair und einfach zu sein.
Keine App oder sonstiger Zertifizierungskram nötig.
Einfach App hochladen auf deren Server, die stellen dann die App im Web als Download zur installation
zur Verfügung.

Würde mich freuen wenn mir mal jemand seine Erfahrung damit mitteilt.

Rollo
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#2

AW: Hat Jemand schonmal mit TestFairy herumgespielt ?

  Alt 12. Mai 2016, 10:47
Ich habe mal versucht für die TfSdk ein Pascal Unit zu schreiben.

Dummerweise heisst eine Funktion darin "begin".

Gibt es eine Möglichkeit das trotzdem kompilieren zu lassen ?

Delphi-Quellcode:
type
  // non-static (instance) methods of "TfLibrary"
  IS4TfLibrary = interface(NSObject)
    ['{5875CABD-AEBA-4A91-A03F-C3DA9BFE24AD}']

    // Interface relates to name and signature in Library
    procedure begin( appToken : NSString ); cdecl;

  end;

EDIT:
Und noch eine dumme Frage:

Das SDK liegt als statische Library .a vor.
Wie sieht es denn mit iOS32 und iOS64 aus, funktioniert damit wohl beides ?


Hier die iOS Headerdatei dazu:

Code:
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface TestFairy: NSObject

/**
 * Initialize a TestFairy session.
 *
 * @param appToken Your key as given to you in your TestFairy account
 */
+ (void)begin:(NSString *)appToken;

/**
 * Initialize a TestFairy session with options.
 *
 * @param appToken Your key as given to you in your TestFairy account
 * @param options A dictionary of options controlling the current session
 */
+ (void)begin:(NSString *)appToken withOptions:(NSDictionary *)options;

/**
 * Change the server endpoint for use with on-premise hosting. Please
 * contact support or sales for more information. Must be called before begin
 *
 * @param serverOverride
 */
+ (void)setServerEndpoint:(NSString *)serverOverride;

/**
 * Returns SDK version (x.x.x) string
 *
 * @return version
 */
+ (NSString *)version;

/**
 * Hides a specific view from appearing in the video generated.
 *
 * @param view The specific view you wish to hide from screenshots
 *
 */
+ (void)hideView:(UIView *)view;

/**
 * Hides a specific html element from appearing in your UIWebView
 *
 * @param selector The specific selector you wish to hide from screenshots. Multiple selectors can be comma separated
 */
+ (void)hideWebViewElements:(NSString *)selector;

/**
 * Pushes the feedback view controller. Hook a button
 * to this method to allow users to provide feedback about the current
 * session. All feedback will appear in your build report page, and in
 * the recorded session page.
 *
 */
+ (void)pushFeedbackController;

/**
 * Send a feedback on behalf of the user. Call when using a in-house
 * feedback view controller with a custom design and feel. Feedback will
 * be associated with the current session.
 *
 * @param feedbackString Feedback text
 */
+ (void)sendUserFeedback:(NSString *)feedbackString;

/**
 * Proxy didUpdateLocation delegate values and these
 * locations will appear in the recorded sessions. Useful for debugging
 * actual long/lat values against what the user sees on screen.
 *
 * @param locations Array of CLLocation. The first object of the array will determine the user location
 */
+ (void)updateLocation:(NSArray *)locations;

/**
 * Marks a checkpoint in session. Use this text to tag a session
 * with a checkpoint name. Later you can filter sessions where your
 * user passed through this checkpoint, for bettering understanding
 * user experience and behavior.
 *
 * @param name The checkpoint name
 */
+ (void)checkpoint:(NSString *)name;

/**
 * Sets a correlation identifier for this session. This value can
 * be looked up via web dashboard. For example, setting correlation
 * to the value of the user-id after they logged in. Can be called
 * only once per session (subsequent calls will be ignored.)
 *
 * @param correlationId Id for the current session
 */
+ (void)setCorrelationId:(NSString *)correlationId;

/**
 * Sets a correlation identifier for this session. This value can
 * be looked up via web dashboard. For example, setting correlation
 * to the value of the user-id after they logged in. Can be called
 * only once per session (subsequent calls will be ignored.)
 *
 * @param correlationId Id for the current session
 */
+ (void)identify:(NSString *)correlationId;

/**
 * Sets a correlation identifier for this session. This value can
 * be looked up via web dashboard. For example, setting correlation
 * to the value of the user-id after they logged in. Can be called
 * only once per session (subsequent calls will be ignored.)
 *
 * @param correlationId Id for the current session
 * @param traits Attributes and custom attributes to be associated with this session
 */
+ (void)identify:(NSString *)correlationId traits:(NSDictionary *)traits;

/**
 * Pauses the current session. This method stops recoding of
 * the current session until resume has been called.
 *
 * @see resume
 */
+ (void)pause;

/**
 * Resumes the recording of the current session. This method
 * resumes a session after it was paused.
 *
 * @see pause
 */
+ (void)resume;

/**
 * Returns the address of the recorded session on testfairy's
 * developer portal. Will return nil if recording not yet started.
 *
 * @return session URL
 */
+ (NSString *)sessionUrl;

/**
 * Takes a screenshot.
 *
 */
+ (void)takeScreenshot;

/**
 * Remote logging, use TFLog as you would use printf. These logs will be sent to the server,
 * but will not appear in the console.
 */
#if __cplusplus
extern "C" {
#endif
   
   void TFLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
   void TFLogv(NSString *format, va_list arg_list);
   
#if __cplusplus
}
#endif

@end

extern NSString *const TFSDKIdentityTraitNameKey;
extern NSString *const TFSDKIdentityTraitEmailAddressKey;
extern NSString *const TFSDKIdentityTraitBirthdayKey;
extern NSString *const TFSDKIdentityTraitGenderKey;
extern NSString *const TFSDKIdentityTraitPhoneNumberKey;
extern NSString *const TFSDKIdentityTraitWebsiteAddressKey;
extern NSString *const TFSDKIdentityTraitAgeKey;
extern NSString *const TFSDKIdentityTraitSignupDateKey;
extern NSString *const TFSDKEnableCrashReporterKey;
extern NSString *const TestFairyDidShakeDevice;
extern NSString *const TestFairyWillProvideFeedback;
extern NSString *const TestFairyDidCancelFeedback;
extern NSString *const TestFairyDidSendFeedback;
Rollo

Geändert von Rollo62 (12. Mai 2016 um 10:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Hat Jemand schonmal mit TestFairy herumgespielt ?

  Alt 12. Mai 2016, 10:57
Versuch es mal bitte damit
Delphi-Quellcode:
type
  // non-static (instance) methods of "TfLibrary"
  IS4TfLibrary = interface(NSObject)
    ['{5875CABD-AEBA-4A91-A03F-C3DA9BFE24AD}']

    // Interface relates to name and signature in Library
    procedure &begin( appToken : NSString ); cdecl;

  end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

AW: Hat Jemand schonmal mit TestFairy herumgespielt ?

  Alt 12. Mai 2016, 11:05
Mal eine ganz dumme Frage, warum willst Du das SDK von TestFairy mit in die App packen ? Du kannst Apps auch ganz normal als AdHoc bei TestFairy hochladen und dann Testern zuweisen. Nur leider musst Du den Device Identifier bei Dir im Entwickler-Account registrieren. Dann klappt das ganze auch ohne TestFairy SDK.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#5

AW: Hat Jemand schonmal mit TestFairy herumgespielt ?

  Alt 12. Mai 2016, 11:26
@Sir Rufo

Vielen Dank, das wars

Ich Idiot habe es mit @begin probiert und bin auf die Schnelle nicht drauf gekommen ...

@RWarneke

TestFairy kann die Apps verteilen ohne das man was macht, das ist richtig.

Aber interesant wird es wenn die Screenshots mitgeliefert werden, und interne Memory und Logdaten uafgezeichnet werden.
Schau dir mal die Videos auf deren Seite an.

iOS:
Dafür muss ich wohl unter IOS diese Library und noch andere Apple.Libraries einbinden.

Android:
Unter Android habe ich die VideoScreenshots auch noch nicht am Laufen, es wird nur das Startbild
mit den simulierten TouchClicks im Video gezeigt.
Dafür werden aber schon CPU, Memory etc. als Chart aufgezeichnet.

Das sollte unter Android komplett ohne SDK funktionieren, da hast du Recht, ich vermute mal das es nicht geht
liegt daran das FMX das OS als Vectordarstellung simuliert, und nicht quasi nativ läuft.
Schade, muss ich nochmal drüber nachdenken, aber zumindest sind andere Daten mitgeloggt.


Eine ganz andere Frage zu Testfairy hätte ich, weil das ja wohl nur mit abgewandeltem Package funktionieren kann,
was dann zu denen nach Hause loggt.
Wie können die in mein APK etwas reinbauen, ohne meine Signierung ?

Bei IPA geht es wohl nicht so einfach, deswegen vermute ich mal brauchen die das SDK.

Zum Testen ist mir das noch Recht, aber für die Produktionversion muss man überlegen ob TestFairy einem da keinen Virus oder ScreenLogger mit reinbaut.
Für meine App ist das im Moment egal, aber ich würde bei sensiblen Daten vorsichtig sein.

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

AW: Hat Jemand schonmal mit TestFairy herumgespielt ?

  Alt 12. Mai 2016, 13:20
@RWarneke

TestFairy kann die Apps verteilen ohne das man was macht, das ist richtig.

Aber interesant wird es wenn die Screenshots mitgeliefert werden, und interne Memory und Logdaten uafgezeichnet werden.
Schau dir mal die Videos auf deren Seite an.
Hat da jemand Erfahrung mit, was mit einer App beim Review passiert, wenn das SDK von TestFairy noch eingebunden ist ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#7

AW: Hat Jemand schonmal mit TestFairy herumgespielt ?

  Alt 12. Mai 2016, 22:37
Ich bin schon ein bischen weiter damit unter iOS:

- Neues TestProjekt angelegt, auch komplett in Apple iOS und iTunes (ist vielleicht unnötig)
- Provisioning files sind angelegt, AdHoc and Distribution certificates sind da
AdHoc schein das zu sein was TestFairy-Distribution braucht
- AppStore entry ist vorbereitet, aber nicht veröffentlicht zur Prüfung
- SDK static lib ist eingebunden
- Dazu muss FMX.Platform.iOS eingebunden und gefixt werden (siehe Beispeil)
- die Library files *.a und *.h vom SDK habe ich im Beispiel s.u. nicht mit reingelegt, wegen möglicher
Lizenzprobleme (kann man von hier bekommen)
- die Library files habe ich mit ins Src Verzeichnis des Projektes gelegt (soll da statisch gelinkt werden)
- Ein call begin("appToken"); wird direkt nach dirFinishLaunchingWithOptions aufgerufen,
mit dem AppToken von TestFairy.
- Build mit Arm7 64/32 byte dual boot code, mit richtigem Provisioning, etc.
- Debug läuft OHNE TestFairy SDK
- Release und Upload läuft MIT/OHNE TestFairy SDK
- Distribution zum Handy läuft MIT/OHNE SDK
- Installation geht nur mit AdHoc Zertifikat
- Installation geht nur auf den mit AdHoc verbundenen Devices, also maximal 100
- Programm startet MIT SDK, und crasht dann siehe Bilder unten
- Der Upload TestFairy geht, aber meldet "SDK not integrated"
- Crash passiert direkt beim Zugriff auf die statische Library
Delphi-Quellcode:
class procedure TApplicationDelegate.applicationDidFailToRegisterForRemoteNotificationsWithError(self: id; _cmd: SEL;
  application: PUIApplication; error: PNSError);
var
  Message: TPushFailToRegisterMessage;
  ErrorDescription: string;
begin
  ErrorDescription := NSStrToStr(TNSError.Wrap(error).localizedDescription);
  Message := TPushFailToRegisterMessage.Create(TPushFailToRegisterData.Create(ErrorDescription));
  TMessageManager.DefaultManager.SendMessage(nil, Message);
end;

class function TApplicationDelegate.applicationDidFinishLaunchingWithOptions(self: id; _cmd: SEL; application: PUIApplication; options: PNSDictionary): Boolean;
var
  StartupOptions: NSDictionary;
  NotificationSettings: UIUserNotificationSettings;
  LocalNotification: UILocalNotification;
  RemoteNotification: Pointer;
  WindowManager: TCocoaTouchWindowManager;
// ITfLib : IS4TfLibrary; //Add TestFairy Library interface locally probably failed, retry

begin
  Include(FState, TApplicationDelegate.TApplicationTransitionState.Launching);
  try
    //####
    //####
    //## Here the TestFairy settings should be applied
    //##
    //## Create the interface
    //##

    ITfLib := TS4TfLibrary.Create; //!! Hier crasht es, beim Alloc:
    //##
    //## Call the interface wit hthe CORRECT appToken for SDK use
    ITfLib.&begin(StrToNSStr( '0299f3dc7.................b36fce78cb') ); //Begin TestFairy session
    //##
    //## Interface auto-destroyed
    //####
    //####

    StartupOptions := TNSDictionary.Wrap(options);
- Soweit bin ich jetzt gekommen, aber es ist schon wieder 22:30.
Deshalb habe ich das Beispiel mal angehangen, in der Hoffnung das jemand diese Library
richtig eingebunden bekommt.

Rollo
Miniaturansicht angehängter Grafiken
clipboard02.jpg   clipboard01.jpg  
Angehängte Dateien
Dateityp: zip T002_TestFairy.zip (4,66 MB, 0x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#8

AW: Hat Jemand schonmal mit TestFairy herumgespielt ?

  Alt 13. Mai 2016, 12:06
nur mal kurz zu dem "Begin" nameclash. Dem interface ist doch der Name egal, der MethodIndex zählt. Nenns doch wie du willst
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#9

AW: Hat Jemand schonmal mit TestFairy herumgespielt ?

  Alt 13. Mai 2016, 12:19
Hallo Memnarch,

Die Zuordnung wird aber über den gleichen Namen gemacht.
Mir wäre auch lieber ich würde das irgendwo festlegen, statt mit CompileMagic im Hintergrund.

Ich bin mal nach Daniels super Beschreibung vorgegangen.

Aber das Interface wird nicht erzeugt.

Mir schwant aber etwas, könnte es sein das didFinishLaunchingWithOptions noch vor dem
Initialisieren des ganzen Rtti Systems getriggert wird ?
Dann könnte die Klasse eben nicht auf diese Art gefunden werden.

Gibt es einen anderen Ansatz die *.a Library von iOS har mit einer Funktion oder Klasse zu Binden,
um diese dann so früh aufzurufen ?

Rollo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Hat Jemand schonmal mit TestFairy herumgespielt ?

  Alt 13. Mai 2016, 12:26
Ab Berlin gibt es Unterstützung durch eine CLI-Tool.

http://www.fmxexpress.com/generate-o...delphi-berlin/
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz