是否可以从另一个应用程序中启动任意iPhone应用程序?例如, 在我的应用程序中,如果我希望用户按下按钮并启动到手机应用程序(关闭当前应用程序,打开手机应用程序).
这有可能吗?我知道可以使用tel URL链接拨打电话,但我想改为启动Phone应用而不拨打任何特定号码.
我已将 assetlinks 文件托管到我们的域 https://ourdomain/.well-known/assetlinks.json 并且还使用https://developers.google.com/digital-asset-links/tools/generator和 android studio验证了这一点应用程序链接助手并从这两种方式获得了验证状态。但是当我共享调试 APK 进行测试时,它总是在浏览器中打开。我还尝试在应用程序商店上传并从那里下载进行测试,但它总是在浏览器中打开。
注意:对于调试构建,使用了我的笔记本电脑 SHA-256,一旦 Play 商店上的应用程序将托管资产链接文件上的 SHA(通过转到 Play 控制台中的应用程序仪表板然后发布管理 --> 应用程序签名获得 SHA-256)更改为我们的域 https ://ourdomain/.well-known/assetlinks.json
以下是清单文件中使用的代码。
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="abc.test.com" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud) android deep-linking kotlin android-deep-link android-app-links
注意
这些网址可能无法使用.
Facebook已经多次更新,并没有正式支持任何这些.
/注意
我正在尝试查看有关iPhone上的Facebook应用程序的可用信息.到目前为止,我已经发现含有有限信息的夫妇的网站,我能找出Facebook的个人主页发布命令(遗憾的是它保持窗口打开后,您交的-那么,谁发布到Facebook的人有推后一次,然后取消).
我的问题是,是否有人有关于可以发送到Facebook应用程序的命令的任何更多信息?
我可以从http://wiki.akosma.com/IPhone_URL_Schemes获取以下信息
fb://profile
- 打开Facebook应用程序到用户的个人资料.fb://friends
- 打开Facebook应用程序到朋友列表.fb://notifications
- 在通知列表中打开Facebook应用程序(注意:此URL似乎存在错误.通知页面打开.但是,无法导航到Facebook应用程序中的任何其他位置)fb://feed
- 向新闻Feed打开Facebook应用程序.fb://events
- 在"活动"页面上打开Facebook应用程序.fb://requests
- 在"请求"列表中打开Facebook应用程序.fb://notes
- 在Notes页面中打开Facebook应用程序.fb://albums
- 打开Facebook应用程序到相册列表.这些命令只打开相应的窗口.我找到的第一个有用的命令是
fb://publish/profile/#ID#?text=#BODY#
这是Facebook图形api和我在其他应用程序中找到的其他一些信息的组合.然后有点捅和希望.
替换#ID#
为您要发布到的个人资料的ID,然后替换#BODY#
为您要发布到的文本,并且该窗口显示在Facebook应用中,并且预先填充了文本.
您还可以使用me
id作为id发布到已登录用户的个人资料.
如果有人知道我正在尝试与它接口并希望尽可能多的信息.
iphone facebook deep-linking undocumented-behavior facebook-graph-api
我有一个网站,使用户可以进行搜索查询.查询可能需要一些时间才能完成(几分钟到几天),我希望用户能够通过发送带有用户链接的电子邮件来下载Android应用并在那里收到答案.
无论用户是否安装了应用程序,我都希望这种机制能够运行; 换一种说法:
https://play.google.com/store/apps/details?id=com.bar.foo&referrer=BlahBlah
),让用户安装它,并使用identifier参数打开应用程序.有没有办法形成一个链接,打开一个带有参数的Android应用程序,无论是否安装该应用程序都可以使用?
如果已通过深层链接打开应用程序,则深层链接不起作用.
但是,如果我打开应用程序而不是通过触发深层链接,例如单击应用程序图标以打开应用程序.然后在之后触发deeplink将始终有效.
这里有详细信息:
所以我在AndroidManifest中设置了这样的活动,即LaunchActivity.
<activity
android:name="some.package.name.LaunchActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.SomeTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="dlscheme" android:host="dlhost" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
在LaunchActivity中,我会在onCreate()中打印一个日志,表明它已存在.
我用了
adb shell am start -W -a android.intent.action.VIEW -d "dlscheme://dlhost/param" some.package.name
Run Code Online (Sandbox Code Playgroud)
测试深层链接.
随着应用程序被杀,我使用了上面的命令.它可以打开应用程序并路由到正确的活动,没问题.并有以下日志.
adb shell am start -W -a android.intent.action.VIEW -d "dlscheme://dlhost/param" some.package.name
Starting: Intent { act=android.intent.action.VIEW dat=dlscheme://dlhost/param pkg=some.package.name }
Status: ok
Activity: some.package.name/.activity.LaunchActivity
ThisTime: 898
TotalTime: 898
WaitTime: 919
Complete
Run Code Online (Sandbox Code Playgroud)
但是,如果我再次输入相同的命令,而不会杀死应用程序.它只会打开应用程序,但它不会打开正确的活动,并生成以下日志.
adb shell am start -W …
Run Code Online (Sandbox Code Playgroud) 我按照https://developer.android.com/training/app-indexing/deep-linking.html上的说明进行操作,但是当我想触发意图adb
时:
adb shell am start
-W -a android.intent.action.BROWSEABLE
-d "http://example.com/gizmos" com.myapp.android
Run Code Online (Sandbox Code Playgroud)
我得到了
Error: Activity not started, unable to resolve Intent { act=android.intent.action.VIEW dat=example://gizmos flg=0x10000000 pkg=com.myapp.android }
<activity
android:name=".activities.DeepLinkActivity"
android:label="@string/title_activity_deep_link">
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="http"
android:host="example.com"
android:pathPrefix="/gizmos" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
我有任何明显的错误吗?
我在我的应用中实现了深层链接.我在清单文件中添加了此intent过滤器,并且深层链接正在运行.
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.VIEW" />
<data
android:host="www.mywebsite.com"
android:pathPrefix="/something"
android:scheme="http" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
问题是通过深度链接,我的应用程序将在当前应用程序之上启动.如果我在Gmail中并点击了一个链接,那么我的应用就会在Gmail上启动.我想以不同方式启动我的应用程序.
如果我的应用已经在后台运行,我点击Gmail中的一个重定向到我的应用的链接,我将同时运行两个应用实例; 一个在后台,另一个在Gmail之上.我想一次只运行我的应用程序的一个实例,因此它不在当前应用程序(Gmail)之上.我怎样才能做到这一点?
我们正在尝试在我们的某个iOS应用程序中实施延迟深层链接,以鼓励用户邀请他们的朋友使用该应用程序,并根据他们的推介链接发生的安装数量来奖励用户.基本上类似于TapStream的产品.
考虑这个例子:
因此,UserA在他们想要的任何网络上分享他们的链接"ourappURL.com/refer?id=userA".UserB单击该链接,将其带到Safari,然后将它们退回到UserB下载应用程序的App Store页面.
当UserB打开应用程序时,应用程序会检查它们所引用的引荐ID(如果有).在此示例中,引荐ID将是"userA",因为它是引用链接中的ID.该应用程序然后将此发送到我们的服务器,我们授予UserA一个推荐信用.
我试图将这个问题分解为其核心部分.我相信第一部分是获取用户引荐链接的网页,以将引荐ID保存到应用可以访问它的某个地方的设备.但由于iOS的沙盒特性,我不确定这是否可行.
我知道这基本上是可行的,因为许多广告提供商都能够跟踪广告系列的安装情况(例如,请参阅移动应用跟踪).
我正在尝试深层链接我的应用程序,并在我的AndroidManifest.xml中实现了以下内容以打开正确的活动.
<activity
android:name=".ui.activities.MyActivity"
android:label="@string/title_activity"
android:screenOrientation="portrait">
<!-- ATTENTION: This intent was auto-generated. Follow instructions at
https://g.co/AppIndexing/AndroidStudio to publish your Android app deep links. -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- ATTENTION: This data URL was auto-generated. We recommend that you use the HTTP scheme.
TODO: Change the host or pathPrefix as necessary. -->
<data
android:host="myHost"
android:scheme="myCustomScheme" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
我正在使用adb测试活动
adb shell am start -W -a android.intent.action.VIEW -d "myCustomScheme://myHost?key=category_parent_id&value=92&title=test" com.myApp.android
Run Code Online (Sandbox Code Playgroud)
Activity正在打开,但只传递给intent中活动的URI
myCustomScheme://myHost?key=category_parent_id
Run Code Online (Sandbox Code Playgroud)
它在"&"后跳过一切
我确实在SO上查找但没有找到任何有多个查询参数的东西.
任何帮助,将不胜感激.:)
我有一个带有下载应用按钮的HTML页面.当iOS用户点击时,它会通过itms-services将用户重定向到App Store.我在这里使用的链接是:
window.location.replace("itms-apps://itunes.apple.com/app/id578505616");
Run Code Online (Sandbox Code Playgroud)
它在移动浏览器上看起来像这样:
Facebook/Pinterest有一个应用程序内浏览器,要求用户同意,然后以"取消"或"打开"应用程序的"警报"框的形式将用户重定向到他们的应用程序,Open应用程序打开外部链接.它看起来像这样:
警报框看起来像这样:
假设用户正在使用iOS设备.此处的预期行为是单击"打开"应用程序按钮时,用户将被重定向到App Store应用程序.但是,在实际重定向发生之前,我们看到了大约10秒的延迟.
观看以下视频:
https://www.youtube.com/watch?v=_dgh7v-IsK8
https://www.youtube.com/watch?v=_LFHeRnBFgg
https://www.youtube.com/watch?v=82Y-kj-pMyw
笔记:
为什么会出现这种延迟?这似乎是一个糟糕的用户体验.
我目前的理论是问题出在苹果方面.原因是,一旦点击打开应用程序按钮,它就不在我们网站的手中,以及Facebook/Pinterest应用程序.我认为,一旦点击按钮,iOS就会处理从一个应用程序到另一个应用程序的实际上下文切换.因此,它表明系统调用实际打开URL是挂起,或系统调用打开App Store应用程序是?? 但是,我无法证明任何一个是真是假.有没有人有更好的解释?
[编辑04/02/2015]我可以确认此问题在我的手机上仍然存在(iPhone 5S w/iOS 8.2).我做了一些进一步的研究,发现这篇文章我认为这是一个与iOS系统相关的错误:OpenUrl冻结app超过10秒
deep-linking ×10
android ×6
ios ×3
iphone ×2
openurl ×2
adb ×1
app-store ×1
facebook ×1
kotlin ×1
objective-c ×1