app可以直接打开u盘 ios
2017-02-13 14:33:48 hbjixieyuan 阅读数 2730

微信浏览器默认屏蔽了AppScheme跳转,我们无法直接从微信中跳转至App中。

但是采用 iOS Universal Links仍然可以做到跳转
配置 Universal Links 可参看苹果文档。
这种方案有几个注意点:
1 Universal Links 可以由系统来做选择,在短信或其他应用中,常按选择打开方式,若选择Safari打开,则后续的跳转会默认跳Safari
2 Universal Links只在iOS 9及以上系统支持
参考:
• App Search API Validation Tool, https://search.developer.apple.com/appsearch-validation-tool/
• 配置Universal Links,可参看苹果文档
• Deferred Deep Linking in iOS,http://tech.glowing.com/cn/deferred-deep-linking-and-branch-sdk-in-ios/

2016-05-05 01:09:24 fygwfygyiq 阅读数 569





通过浏览器直接打开iOS/Android App 应用程序 - Cundong's log - 开源中国社区

点击浏览器中的URL链接,启动特定的App。

首先做成HTML的页面,页面内容格式如下:

<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a> 

这一句就可以了。

 

各个项目含义如下所示:

scheme:判别启动的App。 ※详细后述

host:适当记述

path:传值时必须的key     ※没有也可以

query:获取值的Key和Value  ※没有也可以

 

作为测试好好写了一下,如下:

<a href="myapp://jp.app/openwith?name=zhangsan&age=26">启动应用程序</a>  

 

接下来是Android端。
首先在AndroidManifest.xml的MAIN Activity下追加以下内容。(启动Activity时给予)

※必须添加项

<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="myapp" android:host="jp.app" android:pathPrefix="/openwith"/>  
</intent-filter>

HTML记述的内容加入<data …/>。
其中必须的内容仅scheme,没有其他内容app也能启动。

 

※注意事项:intent-filter的内容【android.intent.action.MAIN】和 【android.intent.category.LAUNCHER】这2个,不能与这次追加的内容混合。
                 所以,如果加入了同一个Activity,请按以下这样做,否则会导致应用图标在桌面消失等问题。

复制代码
<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="myapp" android:host="jp.app" android:pathPrefix="/openwith"/>  
</intent-filter> 
复制代码

这样的话,没有问题。

 

接下来在Activity中需要取值的地方添加以下代码,我是直接写在OnCreate函数里的:

 
Intent i_getvalue = getIntent();  
String action = i_getvalue.getAction();  
  
if(Intent.ACTION_VIEW.equals(action)){  
    Uri uri = i_getvalue.getData();  
    if(uri != null){  
        String name = uri.getQueryParameter("name");  
        String age= uri.getQueryParameter("age");  
    }  
}
 

这样就能获取到URL传递过来的值了。

——————————————————————————————————我是分割线————————————————————————————————————

 

代码copy完了,是不是很惊奇的发现用浏览器输入

 

myapp://jp.app/openwith?name=zhangsan&age=26

是不是404,打不开?

楼主你这不是骗人么!楼主你个混蛋啊。

客官,稍安勿躁啊,你看看你用的浏览器是什么?UC,猎豹,欧朋?放弃吧,试试系统自带浏览器或者谷歌浏览器吧。肯定能成功的,不能成功的话再来坑我。哈哈。


——————————————————————————————————我是分割线————————————————————————————————————

突然觉得好悲哀,好不容易get了这个技能,却不能被第三方浏览器使用。在这个android浏览器大部分被第三方占据着的时代不得不说是个悲剧啊。

 

接下来还是说说为什么第三方浏览器不能成功吧。首先,我发现的是UC浏览器,如果你使用了自己的scheme,而不是http的话,uc会默认在你的scheme前面添加http://。这太坑爹了。其他浏览器没看是不是同样的情况。发现这个问题后我就试着把自己的scheme换成http。然后满怀期待的又跑了一遍,结果还是坑爹了。所以我想会不会是第三方浏览器对url做了处理。到这里,我也无可奈何了。我测试了UC,猎豹,欧朋,这3个都不支持。系统自带的和谷歌浏览器是支持的。

 

最后再补充个线索吧,在浏览器里搜索百度应用。进了他们的页面后,他们是可以实现在各种浏览器启动已经安装好的本地app的。看到这个后我就看了下他们页面的源码。

在这里他们页面添加了个data-sentintent的标签,看到这里,应该能确定第三方浏览器应该是默认都不支持发intent的,只能自己起一个。根据前端说,这个标签应该是自定义的。我们前端看源码的时候发现是这样的

所以最后的结果应该是百度这边是起了个端口,然后在应用里启用了一个服务,来监听这个端口,来获取这个intent。大概就这个思路了。不过楼主没有实际去操作。项目时间紧,太麻烦了。对了,百度这个是有集成他们inapp这个sdk的。

再附上stackoverflow两个相关链接:http://stackoverflow.com/questions/3469908/make-a-link-in-the-android-browser-start-up-my-app

http://stackoverflow.com/questions/2958701/launch-custom-android-application-from-android-browser

 

  最近遇到这么一个需求: 
    当用户在手机浏览器中点击一个按钮时,如果手机上已经该应用程序,则直接打开,如果没有安装,则转向应用下载页面。 再详细一点就是:通过点击网页中一个按钮,打开本地某个Activity(如果有的话)或用浏览器打开某个url。

    查了一下文档,Android是支持这个的: 

http://developer.android.com/guide/topics/manifest/data-element.html

    解释一下文档中的描述:scheme://host:port/path or pathPrefix or pathPattern

这里面定义的schema+host+port+(path or pathPrefix or pathPattern)能拼凑出一个http链接,包含这个filter的Activity,能处理这个http链接。

实现:

  • 网页代码

点击这个按钮:

?
1
<a id="applink1" href="http://test.xx.com/demo/test.php">打开</a>

在 http://test.xx.com/demo/test.php中,直接请求xxxx.apk下载。

  • Activity代码

给目标Activity增加以下filter:

?
1
2
3
4
5
6
7
8
9
10
11
<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:host="test.xx.com "
       android:path="/demo/test.php"
       android:scheme="http" />
</intent-filter>

增加该filter后,该Activity就能处理 http://test.xx.com/demo/test.php在浏览器中点击“开始”,发起对该URL的请求时,如果本机安装了这个应用,系统就会弹出一个选择,询问你想使用浏览器打开,还是使用该应用打开,如下图:


如果本机没有安装这个应用,则直接会使用浏览器打开 http://test.xx.com/demo/test.php,又因为该页面中直接请求了XX.apk,浏览器会提示你下载应用,如下图:



阅读全文……

标签 : 

2018-09-20 11:31:00 weixin_34233421 阅读数 267

代码如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    UIButton *btnSkip = [UIButton buttonWithType:UIButtonTypeCustom];
    btnSkip.frame = CGRectMake((self.view.frame.size.width - 280)/2, 30, 280, 50);
    btnSkip.backgroundColor = [UIColor redColor];
    [btnSkip setTitle:@"测试跳转到Safari" forState:UIControlStateNormal];
    [btnSkip setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [btnSkip addTarget:self action:@selector(skipToSafari) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btnSkip];
    
    
}

- (void)skipToSafari
{
    // app跳转打开safari 跳转打开指定设置的网页
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:www.baidu.com"]];
}
2017-06-24 16:51:00 weixin_34009794 阅读数 60

以前没注意到,打开第三方app有个坑,现在有个需求是跳转到微信去,一开始傻乎乎的在url schemes 里面添加微信

3090071-4ad6e0b7df9c4dd2.jpeg
WechatIMG47.jpeg

这样添加是做支付和分享的时候添加的白名单,如果这样添加iOS10以后的手机是没问题的,但是iOS 10以前的手机就打不开微信,正确的添加方式是这样的


3090071-cfbdb47df8f86e98.png
image.png

然后代码如下

// 联系客服            
            UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"请关注微信公众号\nmmmmm" message:@"与客服进行沟通" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"知道了"style:UIAlertActionStyleDestructive handler:nil];
            UIAlertAction *ok = [UIAlertAction actionWithTitle:@"去微信" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                NSURL *url = [NSURL URLWithString:@"weixin://"];
                if ([APPLICATION canOpenURL:url]) {
                    [APPLICATION openURL:url];
                }else{
                    [UIAlertView showWithTitle:@"警告" message:@"您还未安装微信" cancelButtonTitle:@"知道了"];
                }
            }];
            
            [alertController addAction:cancel];
            [alertController addAction:ok];
            [self presentViewController:alertController animated:YES completion:^{
            
            }];

效果如下


3090071-abda3a3bb535fe89.png
image.png

如果用户未安装微信,给个提示


3090071-9c3caec58f313f08.png
image.png
2016-04-19 14:10:00 weixin_34391445 阅读数 40

在程序里打开另一个APP

1、首先,要在被打开的 APPinfo.plist 文件里添加 URL types 并设置 URL Schemes,如下图所示:

226201-44b23e470e225ed8.png
1.png

2、在项目的 info.plist 文件里添加 LSApplicationQueriesSchemes 属性,并添加子 item 为被打开的 APPURL Schemes,如下图所示:

226201-7d0a5400d0f82106.png
2.png

3、在项目里使用如下代码打开另一个 APP

UIApplication *application = [UIApplication sharedApplication];
if ([application canOpenURL:[NSURL URLWithString:@"ABC://"]]) {
    [application openURL:[NSURL URLWithString:@"ABC://"]];
}

iOS一个APP打开另一个APP

博文 来自: u013892686
没有更多推荐了,返回首页