app ios 打开微信
2017-02-13 14:33:48 hbjixieyuan 阅读数 2727

微信浏览器默认屏蔽了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/

2017-07-06 09:56:00 weixin_34268310 阅读数 49

用通用链接解决在微信qq中做分享链接调起app超时问题,废话少说,上流程。

1.开发者账号设置支持,编辑如图。

6261109-406cec53a0a357d9.png

2.app支持,设置域名,如图,根据需要添加一个或两个都可以,*代表任意字符,如果域名后拼接/*打包会报错。

6261109-6ccd97436046595a.png

3.服务器支持,建立app与链接的关系

6261109-24af323a03246e57.png

4.app代码实现oc,思路如图,根据实际需求变化

6261109-93a4a363c0805e2b.png

5.测试通用链接,官网网址 https://search.developer.apple.com/appsearch-validation-tool/

测试所写链接格式为https://域名+apple-app-site-association或http://域名+apple-app-site-association

有的会报错,我的就报错了,但不影响,可以把可以唤起app的链接粘贴到备忘录,长按看看效果如图,说明通用链接起作用了


6261109-e245ae4fa1ff1f70.png

6.千万不要认为坑踩完了,还有一个很隐蔽的,本人读了三遍苹果英文文档,文档中都没有写,就是你分享的链接的域名和你点开链接里的打开按钮web所替换的链接的域名一定不能相同,我被这个问题坑了一个月,怎么都调不起来应用。估计是微信和qq内部做了屏蔽,只有这两个链接域名不一样的时候才能调起应用。


6261109-e5bb7c89eec7711c.png

7.至此坑已踩完。

2018-01-31 13:06:00 weixin_33805992 阅读数 17

从苹果官方来看,小程序新增了两个功能:

1. 支持打开移动应用

2. 标题栏区域开放自定义

针对第二个功能,就是开发者可以自定义小程序菜单栏的颜色风格,根据需求,对小程序菜单外的标题区域进行自定义,比如设置标题区域的颜色。这里主要介绍一下支持打开移动应用的功能。

支持打开移动应用

乍一看其实有点标题党的行为,支持打开移动应用?

让我想到的是我可以用小程序打开任何移动应用?(答案是不能)

那我是不是可以打开自己的App?(答案是有限制性地打开)

是不是可以打开系统自带的浏览器?(答案是不能)

是不是可以打开第三方的移动应用呢?(答案也是不能)

其实,小程序打开移动应用有一条硬性要求:从移动应用分享至小程序的页面,用户访问时支持打开来源应用。接下来进一步解读一下这条要求。

大部分程序都有微信分享功能,我们常做的就是将一个图片、一段文字亦或是一个URL链接进行分享,可以分享给好友(包括群)、朋友圈或者是添加到个人收藏,如下:

7877747-ca4034694d8275fa.jpg

我们还可以分享小程序,如图:

7877747-ae49471cf2d39f2d.jpg

上面是一个抢票软件(智行)分享到微信的一个小程序,好友可以点击小程序帮忙加速。按照官方文章的说法,分享到微信的小程序里面如果有一个按钮,实现如下:

1

打开APP

那么当点击此按钮时,就会打开源App。在其他情况下是无法打开的,这里给出了一张能否打开移动APP的图解:

7877747-ead0bba18f13c868.jpg

这里小程序给出一个场景值概念,只有场景值为1036(还有个状态值true或false,它决定是否能够打开APP。场景值为1036,状态值为true)的小程序,才能够打开源APP,即小程序不能打开任何App,只能跳回分享小程序卡片的APP。官方文档也对这个标识做了解释:

在小程序的生命周期内,这个状态的初始值为 false,之后会随着小程序的每次打开(无论是启动还是切到前台)而改变:

当小程序从 1036(App 分享消息卡片) 打开时,该状态置为 true。

当小程序从 1089(微信聊天主界面下拉)或 1090(长按小程序右上角菜单唤出最近使用历史)的场景打开时,该状态不变,即保持上一次打开小程序时该状态的值。

当小程序从非 1036/1089/1090 的场景打开,该状态置为 false。

针对第二条,1089和1090那个,我的理解是小程序类似于移动APP,它并没有关闭,而是在后台,所以1089和1090打开小程序只是把小程序唤到前台,所以小程序状态不变。状态如果为true,也可以打开移动APP。 以上便是对小程序打开移动应用的介绍,接下来看一下具体代码实现。

代码实现分享小程序打开移动应用(iOS版本,Android类似)

首先要做的就是新建一个工程,然后集成微信分享,具体如何集成可以参见官网集成文档,集成之后,在页面添加一个按钮,触发实现如下:

1

- (IBAction)openSmallProgramAction:(id)sender { //分享小程序的实现 WXMiniProgramObject *wxMiniObject = [WXMiniProgramObject object]; wxMiniObject.userName = @"gh_*************"; wxMiniObject.path = @"pages/index/index"; // WXMediaMessage *message = [WXMediaMessage message]; message.title = @"我是小程序"; message.description = @"我是用来测试打开App的小程序"; message.mediaObject = wxMiniObject; SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init]; req.message = message; req.scene = WXSceneSession; [WXApi sendReq:req]; //原来做分享的实现 // SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init]; // req.text = @"分享的内容"; // req.bText = YES; // req.scene = WXSceneSession; // [WXApi sendReq:req]; }

这里是所有的App都可以用上面的实现方式分享小程序么吗?答案是否定的。看官方文档的说法:

移动应用分享功能支持小程序类型分享,要求发起分享的APP与小程序属于同一微信开放平台帐号。支持分享小程序类型消息至好友会话,不支持“分享至朋友圈”及“收藏”。

也就是说小程序分享是有限制的:

1. 发起分享的App与小程序属于同一微信开放平台账号

2. 只支持分享小程序类型消息至好友会话(SendMessageToWXReq的scence只支持WXSceneSession)

经过测试,一个账号不能同时注册微信开放平台和微信公众平台。也就是说:如果你的账号注册了微信开放平台,那么该账号就不能再次注册微信公众平台。

微信开放平台放的是移动APP。

微信公众平台放的是小程序。

那官方所说的属于同一微信开放平台账号就不是一个账号下既有APP又有小程序(因为小程序是在微信公众平台开发的)。打开微信开放平台页面之后,第一条就好理解了:

7877747-cc9c8fa2626c7e67.jpg
7877747-15fd25306e239b91.jpg

如果你想要在移动APP内分享小程序,你必须在该APP所在的微信开放平台账号下绑定微信小程序,这样才可以在APP中实现小程序分享。这就是官方所说的APP和小程序属于同一微信开放平台账号。

那么APP怎么知道分享哪个小程序的? 或者说APP是怎么和小程序关联的呢?

这就要看上面的那段代码(前提是你把小程序和APP放到了同一开放平台账号下),其中有一行:

1

wxMiniObject.userName = @"gh_*************";

该userName就是小程序的userName,你可以登录微信公众号平台|小程序,然后在设置--->基本设置中查看,里面有个原始id,就是小程序的userName。

这样你就将APP的分享和小程序关联起来了。

还有一个问题:分享的小程序如何打开指定的页面呢?

这就要看另一行代码:

1

wxMiniObject.path = @"pages/index/index";

你需要设置一下小程序的path,这个path的页面就是你点击分享的小程序打开的页面。这里看一张小程序开发工具的图:

7877747-3be6e4c0051fc3f1.jpg

pages所指的就是页面,例如上图的pages文件夹包含了detail和index和logs三个页面,其中:

index:指代的是信用卡列表页。

detail:指代的是点击列表某个item进入的详情页。

logs:日志页面

所以如果你想跳转到详情页,那么你在设置wxMiniObject的path时就应该写成“pages/detail/detail”。这样就实现了点击分享的小程序进入指定的页面了(如果页面需要参数你也要在分享时传过去)。

wxml:相当于html

wxss:相当于css

这里其实是微信小程序自己定义了后缀。

这个时候你分享的小程序场景值为1036,且状态为true,如果此时你小程序里面有open-type为“launchApp”的button,点击button你就会跳回你的移动APP啦。如果想给APP回传内容,可以设置app-parameter。就像这个小按钮:

1

打开APP

到此,我想你应该大概了解小程序支持打开移动应用到底是怎么回事了。

总结

小程序并不是支持打开所有移动APP,就算是同一个微信开放平台账号下面的移动APP和小程序,小程序也不一定可以打开,具体还要看场景。

展望

小程序支持跳转移动APP是很大的进步,在小程序以后的进一步完善中,它应该会朝着APP直接打开小程序方向迈进,而不仅仅是通过分享打开小程序。未来我们也许会实现点击移动APP里面的某个按钮直接打开某个小程序,然后在小程序操作完成之后再次返回到移动APP。(例如微信支付,可以从移动APP跳转到小程序进行微信支付,支付成功后直接返回移动APP)

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 阅读数 39

在程序里打开另一个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支付

阅读数 9

iOS一个APP打开另一个APP

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