android - 直接链接到应用程序

标签 android ios facebook

我们有一个连接到 facebook 的游戏 - 我们有一个 facebook Canvas ,还有一个用于 ios 和 android 的 native 移动应用程序,它在 facebook 仪表板中定义并且启用了深度链接。 我们想在我们的粉丝页面中分享一个链接,当用户点击该链接时将执行此操作:

  1. 如果用户在他之前没有批准我们的应用程序,他将被要求批准我们的 facebook 应用程序。
  2. 如果用户使用的是桌面设备,他将被重定向到我们的 Canvas 页面。然而,如果用户使用的是移动设备并且应用程序安装在他的设备上,他应该直接在他的应用程序上被引导到移动应用程序(深度链接)。如果他使用移动设备并且他的设备上没有安装该应用程序,则应该将用户带到相关的应用程序商店。

知道如何从我们的 Facebook 粉丝页面深度链接(使用 Facebook 吗?)到我们的移动应用程序?

谢谢!

最佳答案

对于 iOS,您可以使用 url schemes要将用户引导至您的应用,检查该应用是否已安装在设备上,请执行此操作。

if([[UIApplication sharedApplication] canOpenURL:[NSURL urlwithString:@"YourAppsScheme"]])
{
   //your app is installed on the device, open your app using
  [[UIApplication sharedApplication] openURL:[NSURL urlwithString:@"YourAppsScheme"]]
}

else
{
  [[UIApplication sharedApplication] openURL:[NSURL urlwithString:@"your applications itunes url"]] //

}

对于 Android,你做同样的事情,但你检查设备上是否存在 pacakge 名称,How to check programmatically if an application is installed or not in Android?

Android 示例代码段:

installed  =   isPackageInstalled(APPPACKAGE);
        if (installed) {
Intent i;
PackageManager manager = getPackageManager();
try {
    i = manager.getLaunchIntentForPackage(APPPACKAGE);
    if (i == null)
        throw new PackageManager.NameNotFoundException();
    i.addCategory(Intent.CATEGORY_LAUNCHER);
    startActivity(i);
} catch (PackageManager.NameNotFoundException e) {

}      

}

else
{
// open google play app details page of your app

    final String appName = ...;
    try
    {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+appName)));
    } 

    catch (android.content.ActivityNotFoundException anfe) {
    startActivity(new Intent(Intent.ACTION_VIEW,    Uri.parse("http://play.google.com/store/apps/details?id="+appName)));

    }
}

private boolean isPackageInstalled(String packagename, Context context) {
    PackageManager pm = context.getPackageManager();
    try {
        pm.getPackageInfo(packagename, GET_ACTIVITIES);
        return true;
    } catch (NameNotFoundException e) {
        return false;
    }
}

从网页执行此操作,

<script type="text/javascript">
function startMyApp()
{
  document.location = 'yourAppScheme://';
  setTimeout( function()
  {
      if( confirm( 'You do not seem to have Your App installed, do you want to go download it now?'))
      {
        document.location = 'http://itunes.apple.com/us/app/yourAppId';
      }
  }, 300);
 }
</script>

关于android - 直接链接到应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20280683/

相关文章:

java - 返回上一页时 Android 应用程序中的服务连接泄漏

ios - 如何在 collectionview 中将第四个图像显示设置为半 View ...?

ios - 存储但不将 NSManagedObject 保存到 CoreData?

ios - Facebook api ios-sdk,代表不工作,未调用 fbDidLogin

html - Facebook Like 按钮在 IE 中不工作

android - 有什么办法可以改变虚拟表吗?

Javascript/AngularJS 要求消费者下载 iOS/Android 应用程序

iOS 导航栏高度

php - 使用 PHP5 Curl 调用 Facebook Graph API。不同的服务器得到不同的响应

java - 为特定大小的拇指和轨道切换 View 设置可绘制对象