How to hide the app from the play store for only specific search - google-play

Let's assume the name of the app is "Alpha" and there are three apps for "Alpha".
First (main app) => Name: "Alpha", bundle name: "com.alpha.customer"
Second (delivery partner app) => Name: "Alpha Delivery Partner",
bundle Name: "com.alpha.delivery"
Third (rider app) => Name: "Alpha Rider", bundle Name:
"com.alpha.rider"
Now what I have to do is when the user types "Alpha" on the play store then he/she is only able to view First (main app) only, not the other two apps (currently it shows all three apps).
And for the other two apps, they should only be visible when the user types the whole name of the app.

Your title should be unique and accessible, avoid standard terms, and reinforce what your app is about.
Keep your title focused. Long labels may be shortened on some devices that your users are browsing on.
Avoid using subtle misspellings of general terms, as users may
correct misspelt search terms.
Source - Google
You can check it from here
Make sure your app SEO is good and also make sure your app must be shown on the web search too.
Make your app name unique and use the same name in the developer app file.

Related

In Heroku, is slug an acronym?

The Heroku documentation just says:
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.
Where does the term slug come from? Does it have some origin within the company? Does its use come from the same place as wordpress slugs - ie from the newspaper industry?
I think the name "Slug" derives from Quake computer game terminology. The (non-public) software that Heroku uses to execute user code in dynos is named Railgun (I don't know why). The ammo-type for the railgun in Quake is a "Slug". Thus, the object that the Railgun software deploys ("fires") is a slug.
When we made this part of the Heroku API public we tried briefly to come up with a more self-explanatory name. This was before Docker and containers were really popularized, and I guess we decided that Slug was not too bad a name, and that it was ok for public use.
No, slug is not an acronym.
I believe the name comes from the mollusc:
a tough-skinned terrestrial mollusc which typically lacks a shell and secretes a film of mucus for protection. It can be a serious plant pest.
A slug being the container layer which contains your app's code can be seen as a small thing which lacks a shell (can't be executed without something on top of it, the stack image).
Obviously, slugs don't secrete a film of mucus.

How to share information between cooperating Firefox WebExtensions

I want to create a straightforward extension for Firefox.
User hovers over some word on any page
Pull the dictionary definition of that word from a file inside the extension
Display it while still hovered
I am new to Firefox add-ons and WebExtensions, so here's what I'm wondering:
I want the dictionary file(s) used by the extension to be local, instead of referring to some online website each time.
Any given user might be interested in a different part of the entire dictionary (it contains entries in different languages, users might only want their own 1 or 2 languages) so I want to avoid forcing every user to download the entire dictionary base.
The way I have seen similar add-ons handle that before Firefox 5.* is that they offer the search-and-display add-on separately from the dictionary files which are each available as add-ons in their own right, only actually doing stuff if you have the master add-on installed.
However, none of those examples seem to have been updated for the WebExtensions API and do not support more recent versions of Firefox.
I have also been unable to find how to communicate between web extensions so far.
My question being, how can I share information between 2 or more coorperating extensions to achieve what I described.
And actually, if this seems really stupid for some reason I'm unaware of, do point out any more reasonable alternatives that allow me to handle the dictionary files separately from the main extension.
Possibly related questions I found:
Communicating between 2 Firefox Add-Ons (Cross-Extension Communication)
This one is from 2010 however, thus out of date as far as I could tell.
Mozilla Addon Development - Communicating between windows with different domains
Kind of a similar situation, but they want to pull the definitions from an online source, rather than a local one.
The closest thing I found on the Mozilla browser extension website is communicating between add-on and some native applications, not quite what I need I think.
Communicating between add-ons is a normal part of the functionality of runtime.sendMessage(), runtime.connect(), runtime.onMessage, and runtime.onConnect.
Both runtime.sendMessage() and runtime.connect() have as their optional first parameter:
extensionId
For runtime.sendMessage(), this is:
string. The ID of the extension to send the message to. Include this to send the message to a different extension. If the intended recipient has set an ID explicitly using the applications key in manifest.json, then extensionId should have that value. Otherwise it should have the ID that was generated for the intended recipient.
If extensionId is omitted, the message will be sent to your own extension.
For runtime.connect(), this is:
string. The ID of the extension to connect to. If the target has set an ID explicitly using the applications key in manifest.json, then extensionId should have that value. Otherwise it should be have the ID that was generated for the target.
Both runtime.onMessage, and runtime.onConnect provide a sender property or parameter, either with the message, or as part of the port. This parameter/property is a runtime.MessageSender which includes an id property which is:
id
string. The ID of the extension that sent the message, if the message was sent by an extension. If the sender set an ID explicitly using the applications key in manifest.json, then id will have this value. Otherwise it will have the ID that was generated for the sender.
Note that in Firefox, before version 54, this value was the extension's internal ID (that is, the UUID that appears in the extension's URL).

Branch.io: detect first install from Unity

Trying to detect the first install event from branch.io link (succesfully implement link creating and sharing). I am using Unity branch sdk. The feature i try to create:
user_1 creates and share link to user_2.
When user_2 opens the link and install app i need to reward both of them (with inner in-game coins)
So i succesfully implement the 1. but I cant understand how to detect is user_2 installs the app or simply open it. All data that comes from branch.io UniversalObject callback doesn't contain information that i need.
Which the correct way to detect the install from code?
Alex from Branch here.
The callback parameter you need is +is_first_session. This is one of the parameters returned when the Branch session is initiated each time your app opens (you can find all all these parameters here). If this returns true, then that device has just installed the app (instead of opening it).
However, note that when these parameters are returned, it's impossible to immediately determine if the user is new (what you want), the device is new (not what you want, since the reward could be given twice if the user has installed on multiple devices), or neither (the user deleted the app and reinstalled on the same device). You would probably want to hold off on actually awarding the referral points until after the user has logged in with some sort of unique ID.
Branch also has a built-in feature for tracking referral points that might be useful. That lets you configure all the rules using the dashboard UI instead of needing to do it programmatically inside your app.

How to programmatically add, remove, or block people on Steam through a button

There are many sites such as www.tf2outpost.com and www.bazaar.tf where users can add other steam users through the click of a button. How exactly do you accomplish this? There's nothing in the web API that shows you how to add friends.
EDIT: I have found this code: steam://friends/add/some_steam_id Can you modify this code to block/remove people if you have their steam id?
All that URL does is ask your locally installed Steam client to add a fried of the id matching the number after /add/. So if you have another users steam id you can add them by putting their id in that URL like this: steam://friends/add/your_new_friends_id
you can try this yourself by just pasting the url in most any internet browser and steam will popup with a message saying "Your New Friend has been added to your friends list"
Currently the friends command accepts the following subcommands:
add/<id>
Adds user with specified id number
friends/<id>
Shows list of users with whom you recently played
joinchat/<id>
Joins a chat with a specified id number
message/<id>
Send a message
players
Shows table of recent players you've played with
settings/hideoffline
Toggle offline friends from friends list
settings/showavatars
Toggle avatars in friends list
settings/sortbyname
Sorts friends list by name
status/away
Sets status as away
status/busy
Sets status as busy
status/trade
Sets status as looking to trade
status/play
Sets status as looking to play
status/offline
Sets status as offline
status/online
Sets status as online
It appears there currently is no command (at least not public) for blocking/removing people. Such a command would be fairly useless, and would allow for... mischief. You should just manually remove/block people you no longer wish to be friends with; there would be no convenience added from being able to do this from a browser. What exactly are you trying to accomplish?
See the Steam Browser API documentation for complete details about the friends command and other commands.
P.S. its probably a good idea to avoid posting other peoples steam user ids here.

AppleScript application can't get rights in Accessibility

I'm having trouble with my own AppleScript applications and Accessibility in "Security & Privacy".
I've written an application called "open cubase" that I've granted accessibility rights. I used Apple's advice on how to prevent repeated re-authorization (http://support.apple.com/kb/HT5914). But now even when the application is listed and selected in the Accessibility list, it says that it doesn't have assistive access.
And when I'm using
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/Tcc.db 'SELECT * FROM access WHERE client LIKE "%%"'
to check what's going on, I can see this:
kTCCServiceAccessibility|com.atonus.open-cubase|0|1|0|??
Why is there ?? at the end of that? Is there anyone who would know how to resolve this?
I'm using OSX 10.9.2.
Update, based on feedback from the OP:
The OP's issue is not the use of property statements that normally cause an AppleScript-based application to self-modify the application bundle's embedded Contents/Resources/Scripts/main.scpt script file when property values change at runtime.
However, Apple's workaround at http://support.apple.com/kb/HT5914
IS specifically meant to address not requiring re-authorization as a result of this self-modification issue for a given version of an application.
is NOT meant to allow updating the app (changing its source code or resources) without re-authorization.
For security reasons there is NO way to grant one-time authorization to an app based on its bundle ID and then keep it authorized no matter how it changes (e.g., through updates).
You have two options:
Either: Re-authorize the application every time you update it.
After updating your app, go to System Preferences > Security & Privacy > Privacy > Accessibility and toggle the checkmark next to the list item representing your application (if you application isn't there, drag it there).
Note: With Apple's workaround in place - which for security reasons is NOT a good idea unless you truly need to use property statements that persist their values - it may be sufficient to re-sign the application - haven't verified that.
Or: Use a workaround - not recommended for security reasons:
Make your app an unchanging wrapper that loads the true script code at runtime from a location OUTSIDE the app bundle - that way, the app stays the same and doesn't require re-authorization even if the script file loaded at runtime changes.
Example: Say your true script code - involving code requiring assistive access - is stored as ~/Desktop.test.scpt; your wrapper application, once authorized, can then invoke that script with run script file ((path to home folder as text) & "Desktop:test.scpt")
I don't have a specific explanation, but a recommendation:
Do not use properties (e.g., property FNAME : "Input.txt") in your AppleScript-based applications: AppleScript persists these automatically (preserves their values between runs), but the feature is implemented awkwardly (the persisted values are written to the *.scpt file itself - this is what causes the repeated authorization problem) and flimsily (if you modify your application and save (the *.scpt file at the heart of the) application again, previously persistent values are lost).
If you stay away from properties, the problem with repeated authorization simply goes away (unless you update your application). You can roll your own persistence, e.g., via AppleScript's support for .plist (property-list) files (see the System Events dictionary).
You also won't need the workaround described in the linked support article (http://support.apple.com/kb/HT5914), which is also a plus, given that the workaround is based on opening up a security hole.
As for your specific question:
The ?? is the - unhelpful - representation of the csreq columnn value from the TCC.db database and is not a problem per se; OSX manages that column behind the scenes; it contains a fingerprint of sorts identifying the application in its specific current form (similar to an MD5 hash, though I have no idea what is actually being used), so as to be able to detect tampering later.
However, I suspect you may be looking at the wrong database entry:
I'm puzzled by your bundle ID being com.atonus.open-cubase: if your app is an AppleScript-based *.app bundle, its bundle ID would have the fixed prefix com.apple.ScriptEditor.id., e.g., com.apple.ScriptEditor.id.open-cubase. Did you manually modify the bundle ID via the bundle's Info.plist file, or am I missing something?
When the OS determines tampering/a change in an authorized application:
It resets the allowed column value to 0, i.e., revokes authorization
It resets the csreq column value to NULL.
Thus, after you've seen the ... is not allowed assistive access dialog, the database entry should be reported as kTCCServiceAccessibility|com.atonus.open-cubase|0|0|1| - note the changed Boolean flags and the absence of the ?? at the end.

Resources