分享到微信的消息跳转到第三方APP

最近有个需求,要使分享到微信的内容点击直接跳转到我们自己的APP,实现邀请的目的。
如果分享出去一个HTML5页面,然后其他人在微信中点击,由于微信屏蔽了第三方APP的跳转,所以如果在HTML5中使用urlscheme://这种格式进行跳转是行不通(这种方式在safari中是能够跳转到第三方APP的),这种情况下可以在页面中提示用户在浏览器中重新打开。
其实也可以通过另一种方式,分享出去的时候用WXAppExtendObject这种扩展对象,这样分享到微信中消息左上角或者右上角会带有一个小箭头标志,这种类型的数据点击是可以直接跳转到第三方APP并带有数据返回。
下面就说说具体怎么做。
    SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
        req.scene = scene;
        req.bText = NO;
        WXMediaMessage *message = [WXMediaMessage message];
        message.title = xxx;
        message.description = xxx;
        message.thumbData = xxx;
先初始化发送消息的结构体SendMessageToWXReq,再新建其多媒体消息WXMediaMessage
WXAppExtendObject *object = [WXAppExtendObject object];
            object.url = self.extendUrl;
            object.extInfo = @"<xml>extend info</xml>";
            //fileData必须得赋值使得能从微信直接跳转到我们app
            Byte* pBuffer = (Byte *)malloc(1024);
            memset(pBuffer, 0, 1024);
            NSData* data = [NSData dataWithBytes:pBuffer length:1024];
            free(pBuffer);
            object.fileData = data;
            message.mediaObject = object;
关键是生成WXAppExtendObject对象,我把需要的信息放在object.url中,这样在点击跳转进我们客户端的时候就从中取出数据处理。我试了一下,如果不传fileData,分享出去的消息是不会带有小箭头标志,也就不会点击跳转第三方APP的。所以这里传了1KB的数据。
点击跳转客户端的时候,需要在- (void)onReq:(BaseReq *)req代理方法中处理回调数据。
这里一开始遇到一个问题,跳转进客户端的时候,在XCode控制台打断点查看数据,不管是NSArray还是NSString,都只展示了其对象信息,即看到isa指针和对象地址,但看不到具体值,这一度让我以为这个回调方法带不回来回调参数。其实需要将对象右键Print或者直接使用po命令可以查看到具体值多少。
具体处理如下:
- (void)onReq:(BaseReq *)req
{
    if([req isKindOfClass:[ShowMessageFromWXReq class]]){
        ShowMessageFromWXReq *retMsg = (ShowMessageFromWXReq *)req;
        WXMediaMessage *message = retMsg.message;
        WXAppExtendObject *object = message.mediaObject;
        NSString *url = object.url;
        [self handleInviteUrl:[NSURL URLWithString:url]];
    }
}
这样就完成了分享到微信-微信内点击跳转进客户端-根据数据进行具体处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值