是否可以将自定义参数传递给 android 市场,以便我的应用在首次启动时收到它?

Posted

技术标签:

【中文标题】是否可以将自定义参数传递给 android 市场,以便我的应用在首次启动时收到它?【英文标题】:Is is possible to pass a custom argument to android market so my app receives it on first launch? 【发布时间】:2011-11-14 09:19:43 【问题描述】:

有没有办法将自定义参数传递给 android market(或任何其他方式),以便我的应用在安装(并首次运行)后接收参数。

让我解释一下。

    使用 argument1="Hello world1" 启动意图(自定义参数 每一个 时间) 从 android 市场安装应用程序。 首次打开应用。 应用显示消息“Hello world1”

任何情况都可以,不仅仅是打算进入安卓市场。

大多数情况下,应用程序将通过带有绑定 http 架构的条码扫描器安装。因此,浏览器解决方法也是可能的,html5 客户端存储,(将参数存储到浏览器并在我的应用程序第一次运行时从那里获取)

更新

解决方案是为浏览器创建一个 cookie 或其他内容,然后从我安装的应用程序访问它。那可能吗?如果是这样,你能提供一些有关这方面的信息吗?浏览器可以与应用程序共享数据吗?

【问题讨论】:

所以,澄清一下,您希望每个用户在第一次打开应用程序时收到不同的参数并显示不同的消息? 【参考方案1】:

你可以发布这样的链接http://market.android.com/details?id=your.package.name&referrer=your_referrer_parameter 用户点击此链接并安装应用程序后,您的广播接收器将收到一个带有“your_referrer_parameter”值的广播 com.android.vending.INSTALL_REFERRER。

更多信息:http://code.google.com/mobile/analytics/docs/android/#android-market-trackingGet referrer after installing app from Android MarketGet Android Google Analytics referrer tag

【讨论】:

哇!推荐人标签可能会以一种非常巧妙的方式完成工作!我明天试试,更新一下 我会接受你的回答。但既然这是一个有界的答案,你能详细说明一下答案吗? (对于未来的观众) @Fedor:如果用户点击另一个安装链接,带有另一个引用参数,应用程序已经安装在他的设备上,会发生什么? 1.会重新安装应用程序还是会启动之前安装的应用程序? 2. 如果出现第二种情况,启动的应用是否可以使用referer? [编辑:我只是意识到这个答案有多老,也许我应该考虑提出一个新问题而不是在这里发表评论......] 实际上有这个意图 api developer.chrome.com/multidevice/android/intents 不幸的是,如果你没有安装应用程序,这个东西会将你重定向到应用程序商店,但是当你安装它时它不会传递参数。 :(【参考方案2】:

我会继续让重定向到市场的网站也将文件推送给客户端。该文件可以命名为“yourapp.info”,并包含您需要的数据。一旦您的应用程序启动,它可以搜索 SD 卡(它应该位于几个众所周知的目录中,即 /sdcard/Downloads )并读取该文件。对 SD 卡没有访问限制。

关于浏览器中的 Cookie:我不确定您是否可以从任何其他应用程序访问 Cookie -(请查看:blog.watchfire.com/files/advisory-android-browser.pdf - 这是不可能的访问cookies)所以我认为这条路线将被关闭。

【讨论】:

不错的方法。如果是一种将其保存到默认位置的方法,这将是解决方案,但我认为它不能。类似的解决方法是创建某种“公共 cookie”,我的应用可以从浏览器中获取。 我已经更新了为什么我认为一般的 cookie 不起作用的答案【参考方案3】:

AFAIK 你问的是不可能的。市场只向设备提供 APK 文件。但是,根据您想要做什么,可能有许多不同的解决方法。

这里有几个想法:

如果您希望市场为每个用户提供唯一的自定义参数,那么为什么不让您的应用在初始运行时连接到服务器并下载该参数?即使市场可以提供论据,它也必须从您那里得到它,并且您可能必须设置一个服务器来为市场提供论据。

如果您只是想让应用知道它是否第一次运行,您可以使用 SharedPreference 来做到这一点。查询是否存在像 hasAppRunBefore 这样的首选项,如果不存在,那么您知道该应用程序自安装以来首次运行。然后将hasAppRunBefore 变量设置为某个值,表明它之前已经运行过。此实现将允许用户卸载应用程序并重新安装它,并且在每次重新安装后,应用程序将再次运行。

另一个选项是前两者的组合。您可以让应用程序连接到您的服务器并向服务器提供设备的 UUID,然后服务器可以检查它之前是否看到过该 UUID。如果没有,则提供参数,否则不提供。

如果您确实需要每个设备的每个 APK 都不同,您可以设置一个服务器,当收到下载请求时,它会编译一个新的 APK 并提供下载该 APK 的链接。这将允许您为每次下载生成一个新的、唯一的 APK。但是,这需要您自己分发 APK,因为 Android 电子市场目前不提供此功能。

【讨论】:

你的时间。该应用程序只会从安卓市场下载。好吧,是的 1 解决方法是拥有这种独特的设备-服务器关系。但话又说回来,当用户获取应用程序时,您需要某种推送通知。是否可以将一些数据写入默认浏览器,然后从应用程序查看浏览器数据?浏览器能否与应用程序共享数据? 为什么需要推送通知?为什么应用程序在应用程序的初始加载时无法返回,并向服务器请求信息? + 1,如果想法是唯一地识别客户端,那么 ping 到家庭服务器是最好的方法。 我从一个链接安装应用程序,该链接重定向到 android 市场。我对那个链接说“当你下载应用程序时首先打开第三张图像。我也可以从 android 市场安装该应用程序没有任何争论。我怎么能知道我打算用那个应用程序做什么而不首先控制手机(我的应用程序还没有安装到手机上) 我认为这里的问题是 OP 希望在安装应用程序之前显示一些特定于单击哪个链接的信息。这样,您就必须依靠 IP 地址来识别设备

以上是关于是否可以将自定义参数传递给 android 市场,以便我的应用在首次启动时收到它?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 动态链接将自定义参数传递给 iOS 和 android

是否存在某种方式将自定义参数传递给 Firebase 上的短动态链接?

Android 数据绑定将参数传递给 onClick 方法

将自定义参数传递给 Symfony2 中的自定义 ValidationConstraint

如何将自定义参数传递给事件处理程序

Android - 如何将自定义对象传递给片段