Does LaunchDarkly's SDK rely on the local feature store or the streaming API, when clients ask for a toggle value? - toggle

Am looking at using LauchDarkly's (LD) java sdk to consume toggles from LD. From when I have read, I understand that it uses streaming API, which means when toggle values are changed in LD (via Dashboard) those changes are pushed to all the LD clients that are connected. When I looked at the source code for the SDK, i noticed that it uses a local cache (Feature Store) to store all the flags.
My question is around, how does the SDK fetch the toggle value? When clients ask the SDK for a toggle value, is the value looked up in the local feature store or does it actually make a call to the streaming api?

I have confirmed with Lauch Darkly's support. Here is what they had to say
"Once initialized, the SDK will evaluate the flag for a user against the store. The store is then updated via the streaming connection when there are flag changes."
K

Related

Change The status of user to offline in firestore

I have Taxi App, And I need add when the driver closed the app, the status of the driver changed to offline in firestore
how I can do that?
plz explain for me
Firestore has no built-in capability to write something in the database after the client has disconnected.There's a solution but that uses the Firebase Realtime Database and Cloud Functions to store presence information in Firestore too, which is documented here Build presence in Cloud Firestore.Found this blog you can also check this which might help.
Depending on the type of app you're building, you might find it useful
to detect which of your users or devices are actively online —
otherwise known as detecting "presence."
Cloud Firestore doesn't natively support presence, but you can
leverage other Firebase products to build a presence system.
You can refer this stackoverflow thread1 & thread2

ZKemkeeper ReadGeneralLogData function returns false

I'm try to get the log data from a SpeedFace v5l.
When I call the
ReadGeneralLogData(machineNumber);
I get false.
If I call the
ReadAllUserID(machineNumber);
I get true.
Any idea why this could be?
When I check the last error. I got 0 ERR_NO_DATA, but we have events on the device
Newly launched ZkTeco devices are not compatible with their SDKs. You have to relay on their web application as officially no SDKs are launched for new devices. Some of the operations given in the SDK will make the SpeedFace V5L to display the "Authendication Failure" randomly. Once this error comes, you have to flash the device, no other option.
So, don't try with ZK's old/new SDKs with new devices with temperature and mask detections. If you need web API, you can try with CAMS (http://camsunit.com/application/biometric-web-api.html), Zk's API Partner.
Choice the Time Attendance Terminal will make the device working with UTimeMaster, BioTime 8.0, TA Push SDK, Attendance Management software or offline SDK.
Choice the Access Control Terminal will make device working with ZKBioAccess software or AI AC Push SDK.
For that go to "System" -> "Device Type Setting" -> and choice the "Time Attendance Terminal"
But this attendance, the access control is best to be modified at the beginning. If the customer is uploaded, it is easy to modify it easily, because the user data and record are all deleted because of the modification.
It is really easy to write your own ADMSServer.
So if you would like to write your own program and interact with the camera. I would contact ZKTeco Europe and ask for documentation.
With a query command the camera will then push the attendance records to your endpoint.

How to create a global environment variable that can be accessed by SpringBoard or other applications in the jailbroken iPhone?

I found that a variable created in SpringBoard can not be accessed by other regular applications. But now I want to make a flag variable that can share status in the global environment efficiently.
I thought a file created at some path could do that, but that may be not fast enough.
Does any body know how to do this?
You can try combination of a file with notifications of changes in this file. Notifications between processes can be sent in two ways:
Darwin notification center CFNotificationCenterGetDarwinNotifyCenter
Distributed notification center CFNotificationCenterGetDistributedCenter - private API
Distributed notification center is better because you can send notification with some data attached to it. Darwin notification center ignores all user info passed to it. So when you changed some flag and saved it in a file you can send notification with this flag's new value. You don't even need to open file and get flag's value yourself. All other apps just need to listen for this notification.
Here is CFNotificationCenterGetDistributedCenter prototype
CFNotificationCenterRef CFNotificationCenterGetDistributedCenter();
Update:
This function is available in iOS 5.0 and above. If you need to support older versions there are two solutions:
Darwin notification center
CFMessagePort - can transmit arbitary data.
If you really need to support older versions I suggest you using CFMessagePort. It's simple and flexible solution, well documented. If you having troubles with it you can always find working examples.
You can store your var in the keyChain, and make all app which wanna share it in one access group. Hope it help.

Restrict features when user is running old version of application, only if there are changes to the online engine

I would like to restrict online gaming features inside an application, ONLY when there is an update available which impacts the online game code/engine. I know I can disable the online gaming features if the string in [[NSBundle mainBundle] objectForInfoDictionaryKey:#"CFBundleShortVersionString"] (referenced from question here) is not equal to the most recent version in the app store. But if I release an update that does not impact the online gaming experience I do not want to disable the online features.
Does anybody have a creative way to "tag" a release so that I can detect whether the update has an impact to online gaming? Would adding a subversion be the best way? I.E. updates with online features change subversion level 2 (1.2.1) and non-online updates change subversion level 3 (1.1.2)?
As a note, I disable the online gaming features when updates are available in case the update has changes to how a packet is sent or a fix to the scoring engine etc.. so I don't encounter a scenario where an old version is playing a new version and the messages don't match up. (I have also considered using Game Center Groups to make sure you are playing a player from the same app version, but ultimately decided that getting users to upgrade is a better plan)
I would go about this by having a list of valid versions on the server in the form of a whitelist. When checking if the user can be online (for example, when they hit the Multiplayer button), just ping your server including the user's bundle version and have the server return a simple response which denotes whether the user can play based on the version number that they submitted.
I do something relatively similar on an application of mine to push actual code updates to a client based on the version of the application that they are running.

video.watches built-in type trouble

I have a trouble with built-in open graph action type video.watches. I develop an iOS app that should post video watch events. there are two watch action types in my apps' settings and code for them is:
[appnamespace]:watch
video.watches
first one is used for the web site. I need to use second one (not my wish but requirement of the client). To approve the second one I have to provide the test environment to show^ how it works but I have some troubles with it, because app with OpenGraph is not in app store and also it allows watching content only in Russia territory.
So I have couple questions for those who is familiar with Open Graph:
Is it possible to use video.watches request to post actions or facebook requires using request like [appnamespace]:watch for all approved actions?
If the first question answer is "Yes it's possible", what should I do to provide the test environment? I mean, should I connect with any support (and how to do that?) to provide the test app version?