chrome自定义标签无法重定向回混合应用

时间:2018-10-17 07:49:24

标签: angularjs cordova chrome-custom-tabs sfsafariviewcontroller

我正在尝试在我的Hybrid应用程序中使用集成oauth,并且正在与cordova一起使用angularjs 1。我尝试使用此插件 https://github.com/EddyVerbruggen/cordova-plugin-safariviewcontroller以及 https://github.com/EddyVerbruggen/Custom-URL-scheme

但是对于我来说,这并不简单明了。 面临两个问题

  1. oauth完成后无法重定向到应用。
  2. 完成oauth之后如何关闭chrome自定义标签并在应用中获取数据。

下面是尝试的内容。

客户端代码:

if (chatMessages.size() >= 10) {
        Query query1 = newRefere.orderByChild("timestamp").limitToFirst(5);
        query1.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot ds : dataSnapshot.getChildren()){
                    ds.getRef().removeValue();
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

谁将调用此handleopenurl函数?

插件中没有hide()关闭chrome自定义标签的方法

var options=[{url:oauthPostURL,hidden:false,animated:false}];
$scope.openUrl = function(options) {
            console.log("inside openurl--");
            var deferred  = $q.defer();
            try{
                cordova.exec( 
            // success function
            function(response){
                       deferred.resolve(response);
                    },
              //failure function
                    function(response){
                        deferred.resolve(false);
                    },
              "ChromeCustomTabPlugin", "show", options);

            }catch(e){
                console.log("error in corodva plugin ::"+e);
            }
            return deferred.promise;
        }

 function handleOpenURL(url) {
  setTimeout(function() {
    //SafariViewController.hide();
    var data = decodeURIComponent(url.substr(url.indexOf('=')+1));
    console.log('Browser data received: ' + data);
  }, 0);
}

我使用上述插件中的ChromeCustomTabPlugin.java

请帮助您从2天开始努力。如果有人可以提供端到端的示例,那就太好了

1 个答案:

答案 0 :(得分:0)

我自己解决了。 有几个错误。 我手动添加了custom-url-schema插件。

  • HandleopenUrl函数放置在全局页面中,我放置了 是我的起始页index.html中的函数。

  • 缺少
  • custom-url-plugin中的LaunchMyApp.java文件

  • launchMyApp.js文件丢失。

    <plugin name="cordova-plugin-customurlscheme" spec="^4.3.0">
        <variable name="URL_SCHEME" value="" />
        <variable name="ANDROID_SCHEME" value="" />
        <variable name="ANDROID_HOST" value="" />
        <variable name="ANDROID_PATHPREFIX" value="/" />
     </plugin>

  • config.xml中的此行缺失。