2018-09-04 15:22:36 RJM758859182 阅读数 5503

**iOS App主动拉起打开小程序 **

需求,从我们客户端跳转到我们产品旗下的指定小程序,即APP拉起指定小程序

前期准备

  1. 微信SDK集成 官方集成指南
  2. 微信小程序开发
  3. 移动应用拉起小程序官方文档

这里写图片描述

步骤1:在AppDelegate.m中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
 //注册微信  WeChat_ID为对应开发平台移动应用AppId
   [WXApi registerApp:WeChat_ID];
   return YES;
}

步骤2:在需要点击拉起小程序的事件中

  WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
    launchMiniProgramReq.userName = @"";  //拉起的小程序的username  即 原始id (官方实例请填写自己的小程序id
            launchMiniProgramReq.path=@"/pages/home/home";   //拉起小程序页面的可带参路径,不填默认拉起小程序首页
    launchMiniProgramReq.miniProgramType=WXMiniProgramTypeRelease; //拉起小程序的类型 
//    WXMiniProgramTypeRelease = 0,       //**< 正式版  */
//    WXMiniProgramTypeTest = 1,        //**< 开发版  */
//    WXMiniProgramTypePreview = 2,         //**< 体验版  */
[WXApi sendReq:launchMiniProgramReq];

注:在同一开放平台账号下的移动应用及小程序无需关联即可完成跳转,非同一开放平台账号下的小程序需与移动应用(APP)成功关联后才支持跳转。

如有不当之处,希望读者不吝赐教!

2019-06-28 18:34:39 xiaobo0134 阅读数 294

移动应用拉起小程序是指用户可以通过接入该功能的第三方移动应用(APP)跳转至某一微信小程序的指定页面,完成服务后跳回至原移动应用(APP)。

App和小程序互相跳转:

1)App主动发起小程序卡片分享到微信,微信点击打开小程序,这时的小程序可以打开App。(同行的各位做过分享的应该对这个比较熟悉)

2)App主动发起打开小程序,这时的小程序可以打开App。

目前主要就这两种方式吧,严格来说互相跳转不太欠妥,毕竟App才是主动一方,小程序只能被动返回,类似于分享,App如果不发起分享到微信,微信是不能返回你的App的。总的来说,从 APP 跳转到小程序时,小程序会获得返回此 APP 的权限。

此功能需要前端跟iOS开发工程师一起配合,返回主要前端做处理。 小程序打开 APP 的能力 可以理解为由小程序框架在内部管理的一个状态,为 true 则可以打开 APP,为 false 则不可以打开 APP。

App跳转小程序原理及实现微信官网可查看:App拉起小程序功能

小程序返回App原理及实现微信官网可查看:小程序打开App功能

下面主要讲iOS App跳转小程序准备工作,流程配置吧。

1向微信注册你的应用程序id :请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。

2.搭建开发环境

2.1 通过CocoaPods集成

[1] 在工程的Podfile里面添加以下代码:

pod ‘WechatOpenSDK' ,保存并执行pod install。

注意: 命令行下执行pod search WechatOpenSDK,如显示的WechatOpenSDK版本不是最新的,则先执行pod repo update操作更新本地repo的内容

[2] 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id(如下图所示)。

Xcode设置URL scheme

[3] 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin(如下图所示)。

[4] 在你需要使 用微信API的文件中import WXApi.h 头文件,并增加 WXApiDelegate 协议。

常见问题:

对于之前SDK放在主工程目录下,切换成CocoaPods的形式,执行pod install 之后,出现

* Use the $(inherited) flag, or

* Remove the build settings from the target.

解决方法是 把工程target中的build Setting里面PODS_ROOT的值替换成$(inherited)

Other Linker Flags中 -all_load 替换成$(inherited)

3.实现App跳转小程序

[1] 向微信注册你的id。(如下图所示,在 AppDelegate 的 didFinishLaunchingWithOptions 函数中向微信注册id)。

向微信注册你的id

[2] 重写AppDelegate的handleOpenURL和openURL方法:

重写AppDelegate的handleOpenURL和openURL方法

[3]App拉起小程序

//测试代码

[WXApi openWXApp];

iOS这里有个很坑的地方,文档中是这样写的

WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];launchMiniProgramReq.userName = userName;//拉起的小程序的username launchMiniProgramReq.path = path;//拉起小程序页面的可带参路径,不填默认拉起小程序首页launchMiniProgramReq.miniProgramType = miniProgramType;//拉起小程序的类型         

return  [WXApi sendReq:launchMiniProgramReq];

这个userName并没有具体说明是什么参数,但是仔细想想App要跳到指定App一定会有标识,或者说APP是怎么和小程序关联的呢?其实该userName就是小程序的userName,你可以登录微信公众号平台|小程序,然后在设置—>基本设置中查看,里面有个原始id,就是小程序的userName。小程序配置里的原始ID 必须是 gh_................... 形式的。

launchMiniProgramReq.userName = @“gh_xhdfjegew78”;//拉起的小程序的username 其实就是 原始ID。

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

✨✨另外APP关联小程序收银台指引:

登录微信开放平台之后,可在“管理中心-移动应用-应用详情-关联小程序信息”,

添加“wxce9be1b446012310”(举例子),为通过审核的移动应用关联小程序

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

这就要看另一行代码:

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

你需要设置一下小程序的path,这个path的页面就是你点击分享的小程序打开的页面。

[4] 小程序返回App---回调

    -(void) onResp:(BaseResp*)resp

获取结果 Resp.extMsg,前端可通过小程序返回App进行传值做业务处理。

2015-09-23 19:23:37 u014392311 阅读数 431

iOS程序内打开其它app

在iOS内部打开其他应用,使用openUrl来实现。下面介绍打开其它应用的方法:

  • 打开浏览器
  • 打开email
  • 拨号程序
  • 短信
  • 打开第三方应用

打开浏览器:

格式 mailto://${mailaddress}
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://username@126.com"]];

打开拨号:

格式 tel://:${phonenumber}
 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://8888888"]];

打开短息:

格式 sms:${phonenumber}
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:888888"]];

打开其他三方应用:
比如我创建了一个应用A,现在又创建了一个应用B,我想在B应用中打开应用A,首先我在应用A的info.list中设置URL identifier一个名字为abc,

然后在应用B中调用方法为:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"abc://"]];
//在打开应用直线可以用canOpenURL方法来判断是否能够打开该应用,该方法返回一个布尔类型
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"abc://"]]

在这里要注意在iOS9以前在知道要打开应用的identifier即可。但是在iOS9以后苹果做了安全性限制,所以要在info.list中的LSApplicationQueriesSchemes中把要打开的三方应用加入白名单。不然不能打开。

2019-02-21 10:32:29 u013983033 阅读数 583

之前公司要求写一个sdk,里面封装好微信拉起小程序让集成方不用再集成
具体实现:
1、 创建类 WXApiManager
2、 集成微信SDK 如图
在这里插入图片描述
3、添加需要的库文件 如图
在这里插入图片描述
4、 在WXApiManager.h 中具体实现

#import <Foundation/Foundation.h>
#import "WXApi.h"

@protocol WXApiManagerDelegate <NSObject>
@optional
//回调方法
- (void)wxApiManagerDidReLaunchMiniProgram:(WXLaunchMiniProgramResp *)response;
@end
@interface WXApiManager : NSObject <WXApiDelegate>
@property (nonatomic, assign) id<WXApiManagerDelegate> delegate;
+ (instancetype)sharedManager;

/**
 调起小程序
 @param userName 拉起的小程序的username
 @param path 拉起小程序页面的可带参路径,不填默认拉起小程序首页
 @param miniProgramType 拉起小程序的类型   WXMiniProgramTypeRelease = 0 正式版
                                        WXMiniProgramTypeTest = 1    开发版
                                        WXMiniProgramTypePreview = 2 体验版
 @return 返回
 */
- (BOOL)launchMiniProgramWithUserName:(NSString *)userName
                                 path:(NSString *)path
                                 type:(WXMiniProgramType)miniProgramType;
@end

5、WXApiManager.m 实现

#import "WXApiManager.h"

@implementation WXApiManager
#pragma mark - LifeCycle
+(instancetype)sharedManager {
    static dispatch_once_t onceToken;
    static WXApiManager *instance;
    dispatch_once(&onceToken, ^{
        instance = [[WXApiManager alloc] init];
    });
    return instance;
}

-(void)onResp:(BaseResp *)resp
{
    if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]])
    {
        if ([_delegate respondsToSelector:@selector(wxApiManagerDidReLaunchMiniProgram:)]) {
            [_delegate wxApiManagerDidReLaunchMiniProgram:(WXLaunchMiniProgramResp *)resp];
        }
    }
}

- (BOOL)launchMiniProgramWithUserName:(NSString *)userName
                                 path:(NSString *)path
                                 type:(WXMiniProgramType)miniProgramType
{
    WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
    launchMiniProgramReq.userName = userName;
    launchMiniProgramReq.path = path;
    launchMiniProgramReq.miniProgramType = miniProgramType;
    
    return  [WXApi sendReq:launchMiniProgramReq];
}

@end

6、 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 注册

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    [WXApi registerApp:@"wx596faabb6e400ca0"];

    return YES;
}

7、调用

 [[WXApiManager sharedManager] launchMiniProgramWithUserName:@"gh_d43f693ca31f@app" path:@"http://www.baidu.com" type:2];
2015-06-21 16:43:19 u011619283 阅读数 1194

1、评分功能

iOS中评分支持功能开发非常简单。

        NSString *str = [NSString stringWithFormat:
                         @"itms-apps://itunes.apple.com/cn/app/id%@?mt=8", appid];
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
只需要这么两行就可以啦,它就会跳转到AppStore的应用位置去咯。

2、打开其他应用程序

在程序中打开其他应用程序,需要先设置被打开应用的scheme。

例如我们在自己做的APP 1中设置scheme,设置方法如下:


然后在自己的APP 2中添加代码:

    // 1.根据模型拼接url
    //"scheme://identifier"
    NSString *path = [NSString stringWithFormat:@"%@://%@", product.scheme, product.identifier];
    NSURL *url = [NSURL URLWithString:path];
     // 2.判断能否打开应用
    UIApplication *app = [UIApplication sharedApplication];
    if ([app canOpenURL:url]) {
        // 2.打开应用程序
        [app openURL:url];
    }else
    {   // 没有安装应用程序就跳转到AppStore
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString: product.url]];
    }

判断本地是否安装要打开的应用:[app canOpenURL:url]


小程序内打开app

阅读数 1910

没有更多推荐了,返回首页