xu-li / cordova-plugin-wechat-example

An example project for cordova-plugin-wechat
151 stars 115 forks source link

Question:为什么不把share.js定义成为一个service? #6

Closed aaronisme closed 9 years ago

aaronisme commented 9 years ago

您好,感谢你的wechat plugin,但是我有个问题,我看到share 里边将share定义为一个全局的函数。为什们不把它写成一个angular service进行使用?我试了一下,似乎这样是不能工作的,不知道您有没有考虑过?或者这样有什么问题?多谢

xu-li commented 9 years ago

@AaronChen118 因为我准备再加一个cordova的example,同时cordova的example(没有angularjs的)里面会用到share.js。

aaronisme commented 9 years ago

多谢回复,我最近在使用的时候发现,我在我的inoic project里自己定义了一个service实现share的功能,但是还是work不了,最近一直在看

xu-li commented 9 years ago

你可以贴代码,我有空帮你看看?

aaronisme commented 9 years ago

angular.module('starter.services', ['ngCordova'])

.factory('weChatService', function() {

    var _verifyWechatInstalled = function() {
        var result;
        Wechat.isInstalled( function (installed) {
            alert("Wechat installed: " + (installed ? "Yes" : "No"));
            result = installed;
        });
        return result;
    };

    var shareWeChat = function(scene,video) {
        var result;
        var test_debug={
            result:result,
            reason:"no reason yet"
        };
        if (typeof Wechat === "undefined") {
            alert("Wechat plugin is not installed.");
            console.log('erro1');
            test_debug.result = false;
            test_debug.reason = 'plugin not installed';
            return test_debug;
        }

        if(!_verifyWechatInstalled){
            test_debug.result = false;
            test_debug.reason = 'wechat is not installed';
            return test_debug;
        }

        var params={
            scene:scene
        };

        params.message = {
            title: video.videoName,
            description: video.description,
            mediaTagName: "test101",
            messageExt: "test102",
            messageAction: "<action>dotalist</action>",
            media: {}
        };

        params.message.thumb = www/img/ionic.png;
        params.message.media.type = Wechat.Type.LINK;
        params.message.media.webpageUrl = "http://www.test102.com/videos/";
        console.log(params);

    Wechat.share(params, function () {
        alert("Success");
    }, function (reason) {
        alert("Failed: " + reason);
    });
        return ture;
    }
    return {
        weChatShare: function(scene,video) {
            return shareWeChat(scene,video);
        }
    };
});

这是我servic部分的代码

xu-li commented 9 years ago
...
if(!_verifyWechatInstalled()){ //这是个函数调用吧?
...
return true; // 不是return ture,拼错了?
...

还有那个Wechat.isInstalled是异步操作,所以你的_verifyWechatInstalled需要传一个callback进去。比如

var _verifyWechatInstalled = function(callback) {
    Wechat.isInstalled(function (installed) {
        alert("Wechat installed: " + (installed ? "Yes" : "No"));
        callback(installed);
    });
};

别的没看到什么问题,可能具体要调试一下。

aaronisme commented 9 years ago

好的,我试一下,还有个问题,我看到在ionic一个叫crosswalk的东西,您知道是什么吗?貌似我装上了后,ionic build出了arm和x86的两个apk,这个是干什么用的?

xu-li commented 9 years ago

crosswalk可以让你在android里面使用最新版的chrome,来提升性能。@vivijiang 测试过,好像和有些plugin有冲突。

我自己没使用过。

aaronisme commented 9 years ago

好的额,多谢了,另外我发现在分享link的时候,会比较的慢(打开微信的速度),但是当分享文字的时候,就回快很多。不知道有没有什么解决的方法?

xu-li commented 9 years ago

缩略图放在远程服务器上?文件太大了?

可以考虑在前端加个loading的东西吧。

aaronisme commented 9 years ago

果然是缩略图的问题,慢问题解决了。