Jump to content

Hans♫

Members
  • Content Count

    130
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by Hans♫


  1. On 6/3/2019 at 2:29 PM, Yury said:

    -Tokyo 10.2,3; 

    -XCode10.1;

    -fb sdk 4.42.0

     

    I tried to use the Grijjy implementation that you linked to earlier, but I still get the same linker error:

    ___isOSVersionAtLeast", referenced from: -[FBSDKApplicationDelegate application:openURL:sourceApplication:annotation:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);

    However, I just realize that you do not mention your iOS SDK version. I only have the problem with iOS 12, not with iOS11 and earlier.

    What iOS SDK do you use?


  2. It is declared as a TAESBuffer:

    TAESBuffer = array [0..15] of byte;

    I would actually expect that trick to work on 64 bit, but I don't know. It was just an example of the code.

    All I can say is that the total encryption and decryption produces different results on 64 bit than on 32 bit. The reason could be very simple or very complex, but I thought I would first ask here to hear other developers experiences, before I spend more time trying find a way through.


  3. Our software has been using the EldoS AES unit (128 bit key and ECB), to encrypt data stored locally on the users computers (binary data stored in a stream). 
    Now on a 64 bit target, this library no longer works, but our software should still be able to read existing data on the client computers, even when it is the 64 bit edition of our software running.
    This leaves us with two options:

     

    1) Make the EldoS AES encryption/decryption work with 64 bit.
    2) Find another library that can decrypt existing data correctly

     

    Add 1: Did anyone convert it to work with 64 bit?
    It uses some pointer tricks, for example: 

    SomeLongWordVar := PLongWord(@InBuf[0])^

    to convert 4 bytes from an array of byte (InBuf) to LongWord. Not sure if that would work in 64 bit.

     

    Add 2: I quickly tried to decrypt with Lockbox 3, but get the error: "Invalid ciphertext - block padding is corrupted". Maybe I am using it wrong, but it could also be they are not compatible.

     

    Any suggestions what I could use or do to read the old encrypted data from a 64 bit application?
     


  4. When I target iOS 12 I get linker errors related to the Facebook SDK, while linking towards iOS11.2 works fine.
    I hoped that Delphi 10.3.1 fixed it, but it didn't so now I ask here.
    What can it be?

     

    I am using:
    Delphi 10.3.1
    XCode 10.1 (10B61)
    SDK iOS12.0
    The SDK is included by setting "Options passed to the LD linker" (in: Project Options > Building > Delphi Compiler > Linking) to "-ObjC -lz -framework FBSDKCoreKit -weak_framework Bolts"

     

    The errors I get with different versions of the Facebook iOS SDK:


    FBSDK 4.40 (latest SDK)
    Error: "___isOSVersionAtLeast", referenced from:      -[FBSDKApplicationDelegate application:openURL:options:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKApplicationDelegate application:openURL:sourceApplication:annotation:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKApplicationDelegate applicationDidBecomeActive:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      ___51-[FBSDKApplicationDelegate openURL:sender:handler:]_block_invoke in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKApplicationDelegate openURLWithSafariViewController:sender:fromViewController:handler:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKWebDialog _applicationFrameForOrientation] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKWebDialog.o);      -[FBSDKPaymentProductRequestor logTransactionEvent:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKPaymentObserver.o);      ...

     

    FBSDK 4.36
    Error: "___isOSVersionAtLeast", referenced from:      -[FBSDKApplicationDelegate application:openURL:sourceApplication:annotation:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKApplicationDelegate applicationDidBecomeActive:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKApplicationDelegate openURLWithSafariViewController:sender:fromViewController:handler:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKPaymentProductRequestor logTransactionEvent:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKPaymentObserver.o);

     

    FBSDK 4.15
    It works, but this SDK version is deprecated.


  5. Thank you for your persistence Dalija. I have a heart for Delphi too, and I somewhat regret that I posted the image, because I still have no proof if it is our code or Delphi code that fails.
    With the graph I am basically bashing 10.3 RIO because I am tired of its quality.

     

    Our database access uses exactly the same code on Windows, Mac and iOS. No crashes detected or reported on Windows and Mac.
    But as you said, iOS is just waiting for a reason to take your app out. It is a lot more strict on everything.
     


  6. I investigated all recent crash reports delivered to XCode for the app. The majority of the crashes contains a reference to a sqlite file in our app and "Code 0xdead10cc", which means "terminated by the OS because it held on to a file lock or sqlite database lock during suspension"

     

    The positive news is that the user will not discover the crash because it happens when it enters suspension state anyway.

     


  7. Its just a screen dump from App Analytics in App Store. I did not make the graph, Apple did:

     

    EarMasterIOScrash_byOS_full.png.e165683a2964b841ef7260f3bfe22088.png

     

    The graph is not a scientific proof that those Delphi versions are the cause of the leaps, but it is interesting that both leaps happened exactly at the same time as upgrading the Delphi version. 

     

    Except for 10.3 Rio, I am still very pleased with Delphi as it allows us to share 99% of the codebase among the Windows, OSX and IOS versions of our app.

    BTW, on iOS we are using the native iCL components and not FMX.


  8. Our iOS app made with Delphi showed an alarming increase of crashes with the latest update, that was built with Delphi 10.3. So I made this graph in "App Store Connect" that shows a similar increase of crashes when upgrading to Delphi 10.2.2. This is a bit scary... where will it end...

     

    Graph shows crashes per week:

    EarMasterIOScrash.png.b4549721af2827df1724251a67e0ad3f.png

    The vertical gray lines shows when we released a new update of our app.

    The number of sessions per week is almost the same during the whole period, so that does not influence the graph.

    Unfortunately I don't remember what version of Delphi I was using before the 10.2.2 upgrade.

    • Like 2
    • Thanks 1

  9. With Delphi 10.3 Rio, I have added MacOSX SDK 10.14 in the SDK Manager, which I use to build my apps. However, when I run "otool -l <binaryfilename>" on the deployed executable I get this:

    cmd LC_VERSION_MIN_MACOSX
    version 10.8
    sdk 10.8

    This happens also with an empty app.

    It is a problem because I need to Notarize the app with Apple, and it fails with the reply: "The binary uses an SDK older than the 10.9 SDK".

     

    How can I change that?


  10. Thanks for the demo app. Compiled with 10.3 it gave the same result as previously - until I logged out of Windows and in again, then it worked.

    Apparently in Windows 10 GetScreenScale returns only the value present at login time, that's why my first experiments did not work.

    Later I turned on the "Fix blurred apps" setting in Windows 10 and then it returns the correct value immediately even without logging in again.

     

    That's great, so Rio 10.3 works!

    However, when compiled with 10.2.3 it now always returns 1.0, even if I reboot after having changed the scaling in Windows. I am going to figure out why that happens...


  11. I use ScreenService.GetScreenScale to get the Screen scaling. It was partly broken in 10.2.3, but in 10.3 it seems to be completely broken. 

    In 10.3: No matter what scaling is set in Windows: 150%, 175% or 200%, the return value of ScreenService.GetScreenScale is 1.0. 

    In 10.2.3 it did return the value 1.5 with 150% scaling, but with 175% and 200% scaling it also returned 1.5

    I post it here before I post it as a bug in QP, in case I missed something...?

     

    This is the function where I use it (and yes it does actually call GetScreenScale):

    function tScreenScale.GetScreenScale: Single;
    var ScreenService: IFMXScreenService;
    begin
      Result := 1;
      if TPlatformServices.Current.SupportsPlatformService (IFMXScreenService, IInterface(ScreenService)) then
        Result := ScreenService.GetScreenScale;
    end;

     

×