美文网首页hybrid APP(ionic)Ionic3项目实战教程Ionic之路
ionic3项目实战教程 - 第13讲 ionic3社交分享(Q

ionic3项目实战教程 - 第13讲 ionic3社交分享(Q

作者: IonicBlog | 来源:发表于2017-09-01 22:34 被阅读3996次

ionic3项目实战教程 - 第13讲 ionic3社交分享(QQ分享和微信分享)

ionic3项目实战教程 - 第13讲 ionic3社交分享(QQ分享和微信分享)

这一讲主要包含以下几个部分:

  • 1.在微信开放平台创建应用获得wechatappid;
  • 2.在腾讯开放平台创建应用获得QQ_APP_ID;
  • 3.安装QQ分享插件cordova-plugin-qqsdk;
  • 4.安装微信分享cordova-plugin-wechat;
  • 5.ionic3分享功能的实现;

准备工作

  • 微信开放平台开发者账号
  • 腾讯开放平台开发者账号

提示:没有这两个平台开发者账号的请直接跳到第3步,已经准备好�了wechatappid和QQ_APP_ID

1.在微信开放平台创建应用获得wechatappid

微信开放平台官方地址:https://open.weixin.qq.com/, 创建步骤按照官方一步一步来就行了,需要注意的是android包名和iOS的�Bundle Id需要与config.xml中的widget节点的id属性一致,这里使用的是cn.tongedev.dress。创建成功之后需要等1-2天审核。

<widget id="cn.tongedev.dress" version="0.0.1" >  

2.在腾讯开放平台创建应用获得QQ_APP_ID;

腾讯开放平台官方地址:http://open.qq.com/,申请成功之后也同样需要等待审核。

3.安装cordova-plugin-qqsdk插件

这里准备好了QQ_APP_ID:1105786989

cordova plugin add cordova-plugin-qqsdk --variable QQ_APP_ID=1105786989 --save

$ cordova plugin add cordova-plugin-qqsdk --variable QQ_APP_ID=1105786989 --save
Installing "cordova-plugin-qqsdk" for android
Subproject Path: CordovaLib
Adding cordova-plugin-qqsdk to package.json
Saved plugin info for "cordova-plugin-qqsdk" to config.xml

4.安装cordova-plugin-wechat插件

这里准备好了wechatappid:wx7b22a8079fcd2f45

cordova plugin add https://github.com/wowgeeker/cordova-plugin-wechat --variable wechatappid=wx7b22a8079fcd2f45

$ cordova plugin add https://github.com/wowgeeker/cordova-plugin-wechat --variable wechatappid=wx7b22a8079fcd2f45 --save
Installing "cordova-plugin-wechat" for android
Running android-install.Hook: after_plugin_install, Package: cn.tongedev.dress, Path: /Users/eliteenergy/Repos/ionic3-dress.
Adding cordova-plugin-wechat to package.json
Saved plugin info for "cordova-plugin-wechat" to config.xml

5.ionic3分享功能的实现;

5.1 封装AppShare

src/app/目录下新建一个app.share.ts

import { LoadingController, Platform } from 'ionic-angular';
import { Injectable } from '@angular/core';

declare var Wechat;
declare var QQSDK;


@Injectable()
export class AppShare {

    //标题
    title: string = "女装尖货 - 单件月销1.8万"
    //描述
    description: string = "行业精选女装 好货任你挑";
    //分享链接
    link: string = "http://dress.tongedev.cn";
    //分享图片
    image: string = "https://mmbiz.qlogo.cn/mmbiz_png/khImeKLbVF7u5qdXdicpapLl9diadj5db6xHxdlVgxmYPxkYOR8WyVgOw4tn3EHEsvd9hlfu7zEpgVLYkLh28Nibg/0?wx_fmt=png";

    constructor(public loadingCtrl: LoadingController, platform: Platform) {
        if (platform.is('ios')) {
            this.link = "https://itunes.apple.com/cn/app/女装尖货-单件月销1-8万/id1194942857?mt=8";
        }
        else if (platform.is('android')) {
            this.link = "http://a.app.qq.com/o/simple.jsp?pkgname=cn.tongedev.dress";
        } else {
            this.link = "http://dress.tongedev.cn";
        }
    }

    wxShare(scene) {
        var loading = this.loadingCtrl.create({ showBackdrop: false });
        loading.present();
        try {
            Wechat.share({
                message: {
                    title: this.title,
                    description: this.description,
                    thumb: this.image,
                    mediaTagName: "TEST-TAG-001",
                    messageExt: "",  // 这是第三方带的测试字段
                    messageAction: "", // <action>dotalist</action>
                    media: {
                        type: Wechat.Type.WEBPAGE,
                        webpageUrl: this.link
                    }
                },
                scene: scene == 0 ? Wechat.Scene.SESSION : Wechat.Scene.Timeline  // share to Timeline
            }, function () {
                // alert("分享成功!");
            }, function (reason) {
                // alert("Failed: " + reason);
            });
        } catch (error) {
            console.log(error);
        } finally {
            loading.dismiss();
        }
    }

    qqShare(scene) {
        var loading = this.loadingCtrl.create({ showBackdrop: false });
        loading.present();
        try {
            var args: any = {};
            if (scene == 0) {
                args.scene = QQSDK.Scene.QQ;//QQSDK.Scene.QQZone,QQSDK.Scene.Favorite
            }
            else {
                args.scene = QQSDK.Scene.QQZone;
            }
            args.url = this.link;
            args.title = this.title;
            args.description = this.description;
            args.image = this.image;
            QQSDK.shareNews(function () {
                loading.dismiss();
            }, function (failReason) {
                loading.dismiss();
            }, args);
        } catch (error) {
            console.log(error);
        } finally {
            loading.dismiss();
        }
    }
}

5.2 �添加引用

在app.module.ts的providers里引入AppShare

5.3 在首页的右上角添加分享按钮

更改home.html的ion-header为:

<ion-header>
    <ion-navbar style="opacity: 0.8" no-border-bottom color="primary">
        <ion-title>首页</ion-title>
        <ion-buttons end>
        <button ion-button (click)="share($event)">
            <ion-icon name="share"></ion-icon>
        </button>
        </ion-buttons>
    </ion-navbar>
</ion-header>

5.4 分享按钮事件的实现

在�home.ts顶部导入AppShare:
import { AppShare } from './../../app/app.share';

在home.ts的构造函数种依赖注入AppShare:
constructor(public appShare:AppShare,... ){}

在home.ts新增share函数

share(event) {
    let actionSheet = this.actionSheetCtrl.create({
    title: '分享',
    buttons: [
        {
        text: 'QQ好友',
        handler: () => {
            this.appShare.qqShare(0)
        }
        },
        {
        text: 'QQ空间',
        handler: () => {
            this.appShare.qqShare(1)
        }
        },
        {
        text: '微信好友',
        handler: () => {
            this.appShare.wxShare(0)
        }
        },
        {
        text: '朋友圈',
        handler: () => {
            this.appShare.wxShare(1)
        }
        },
        {
        text: '取消',
        role: 'cancel',
        handler: () => {
            console.log('Cancel clicked');
        }
        }
    ]
    });
    actionSheet.present();
}

这里主要实现了分享到QQ好友,QQ空间,微信好友,微信朋友圈。还可以分享到微信收藏,有兴趣的试试。

微信分享文档:https://github.com/wowgeeker/cordova-plugin-wechat.git
QQ分享文档:https://www.npmjs.com/package/cordova-plugin-qqsdk

好了,这一讲就到这里了,下一讲将介绍如何打包android平台发布到应用市场。

相关文章

网友评论

  • 732d4885e0de:分享成功,但是返回app的时候app会重启,这个情况是怎么回事?
    732d4885e0de:加了这个:compile "com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+"
    但是感觉没用
  • 蔚蓝的宁静:有没有研究过 与极光的jshare 做分享?
  • Night_LION:有没有分享小程序的
    蔚蓝的宁静:我写了一个分享小程序的
    Night_LION:@IonicBlog 我想知道 ionic 怎么分享小程序 :cry:
    IonicBlog:@Night_LION 后续会出小程序开发实战教程
  • f32180e135bc:微信分享成功后,点击返回app,然后就显示抱歉,app已停止运行,确定之后,会重启app,这个要如何解决?config.xml已经添加了<preference name="AndroidLaunchMode" value="singleTask" />
    ec7154608c72:@林六六六 我刚刚也发现这个问题了,但是如果别的插件一定要支持到android7.0的话,这种情况怎么弄呢,如果你以后有遇到的话多交流交流哈
    f32180e135bc:@ec7154608c72 我的是因为微信插件不支持android7.0版本,把android打成6.4版本就可以用了
    ec7154608c72:大兄弟,这个问题你是怎么解决的呢,我现在也是同样的问题额,求指教
  • 6ccf37814024:楼主 我用你这个方法 QQSDK is not defined 返回这个错误?这是怎么回事呀
  • 龚祎垄:博主、你的后台是用WebAPI写的吗
    IonicBlog:@龚祎垄 是的
  • 不在三重门:谢谢! 微信的插件获取不了config.xml里的 appid的, 需要再wechat.java手动写死
  • 日暮冰秋:能提供下源码吗
    日暮冰秋:@IonicBlog 谢啦
    IonicBlog:@日暮冰秋 github搜索ionic3-dress
  • 934a6636fa65:分享成功后,为什么应用跳回了登陆页面
  • dml1874:$ ionic cordova plugin add cordova-plugin-qqsdk --variable QQ_APP_ID=YOUR_QQ_APPID
    $ npm install --save @ionic-native/qqsdk
    这是官网给的安装插件的步骤,楼主给的步骤只需要第一步就可以,这是为什么呢,它们有什么不同?麻烦大神给解释一下,非常感谢!
  • 40134d66b73e:cordova plugin add cordova-plugin-wechat --variable wechatappid=YOUR_WECHAT_APPID, or using plugman, phonegap, ionic
  • ceido:桶哥,微信分享成功了一次,后来一直都不行,一打开窗口马上就关闭了,然后剩下一个loading一直在转。qq就可以。
    dml1874:楼楼,你微信分享成功了吗,我现在也是微信分享不成功楼楼,你微信分享成功了吗,我现在也是微信分享不成功
    dml1874:@dml1874 楼楼,你微信分享成功了吗,我现在也是微信分享不成功
    dml1874:我的都不可以,就出现了一个加载的画面很快就消失了
  • 7cf8c8a251e9:declare var Wechat;
    declare var QQSDK;
    怎么总是报错未定义呢
  • 一只苍白的黑:博主,我有一个问题想请教下。
    我项目的判断用户登录成功后,会跳转到 tabs 组件下的 userPage页面,使用 this.navCtrl.push("UserPage");跳转成功后,userPage页面底部没有tab导航,请问应该怎么处理
    一只苍白的黑:@一只苍白的黑 http://www.jianshu.com/p/b75dfee9f14e 这个是我的项目现状,最后使用this.navCtrl,push("userPage") 时候,底部的tabs导航会消失。麻烦解读下
    一只苍白的黑:@IonicBlog 这样会不会进入APP的时候就进入了登录页面,可需求需要进入首页,首页是tabs的tab选项
    IonicBlog: 登陆成功之后一般将tabs组建设置为rootPage,然后在使用this.tabs.select()来根据索引选择userpage对应的tab。
  • 漂泊猫:import { NavController, IonicPage, ActionSheetController } from 'ionic-angular';
    constructor(..., public actionSheetCtrl: ActionSheetController) {

本文标题:ionic3项目实战教程 - 第13讲 ionic3社交分享(Q

本文链接:https://www.haomeiwen.com/subject/rswhjxtx.html