【问题标题】:Ionic Framework - Force to leave an App reviewIonic Framework - 强制离开 App 评论
【发布时间】:2016-11-24 06:28:51
【问题描述】:

我是一名初学者,我需要一些关于评级的帮助。我想要的是根据用户是否将我的应用评为 5 星来显示菜单项。

例如,如果用户评分为 5 星,我设置 class="reviewed" 并显示菜单项以与该类有关。

我尝试关注http://ngcordova.com/docs/plugins/appRate/ 我被这个问题困住了。

【问题讨论】:

  • 您好,Apple 在 iOS 10.3 中引入了新的 StoreKit,开发人员可以显示应用内评论菜单来按星级对应用进行评分。这是您的 ionic 项目的 cordova 插件github.com/omaxlive/com.omarben.inappreview

标签: angular typescript cordova ionic-framework


【解决方案1】:

appRate 插件只是一个工具,它显示一个对话框,询问用户是否要为您的应用评分,如下所示。

    

就评分页面而言,应用程序可以执行的唯一功能是将用户发送到评论页面 - 应用程序无权访问其任何评分信息,即使您能找到方法,它也是违反 Google Play 和 iTunes 商店的政策,因此该应用会在审核期间被拒绝。

查看以下答案:

由于原生 iOS / Android 的这些限制,Cordova 也是如此。

【讨论】:

  • 谢谢,如果用户点击“评价我们”按钮,无论他评价与否,我们设置了不同版本的应用程序。并根据其类别显示一个新的菜单项。
【解决方案2】:

如果您希望确定用户已选择查看商店评论页面(无需确认他们实际执行了评论或评分),请使用onButtonClicked(),它可以根据 apprate js @987654321 具有以下值@。

$cordovaAppRate.onButtonClicked(buttonIndex) {
      switch (buttonIndex) {
            case 1: // clicked 'Rate It Now'
            case 2: // clicked 'Remind Me Later'
            case 3: // clicked 'No, Thanks'
      }
};

有了这个你可以做任何你想做的事情,例如:

$cordovaAppRate.onButtonClicked(buttonIndex) {
    if(buttonIndex === 1) localStorage.setItem('REVIEWED', JSON.stringify(true));
};

然后您可以轻松地在 Angular 控制器中为页面模板添加一个类。例如,使用 jquery:

.controller('MyMenuCtr', function($scope) {
    if(JSON.parse(localStorage.getItem('REVIEWED'))) $('ion-content').addClass('reviewed');
    ...
}

【讨论】:

    【解决方案3】:

    从 iOS 10.3 开始,您可以使用来自 Apple 的出色 InAppReview。我可以证明,就评论数量而言,这种审查应用程序的新方式对我们的应用程序非常有成效。您可以在此处阅读关于 Instagram doubled their reviews 的更引人注目的案例研究。

    非常容易使用和实现的cordova插件在这里:https://github.com/omaxlive/com.omarben.inappreview

    为简洁起见,如果 Github 存在(不太可能),以下是使用它的步骤:

    安装插件:cordova plugins add com.omarben.inappreview

    在代码中这样调用它:

    var requestReview = function(){
        try{
            var success = function() {
                console.log("Success");
            }
            var failure = function() {
                console.log("Error calling plugin");
            }
    
            inappreview.requestReview(success, failure);
        }catch(e){
            console.log("catch: "+e);
        }
    };
    

    希望这对某人有所帮助...

    【讨论】:

      【解决方案4】:

      离子 V3:https://ionicframework.com/docs/v3/native/launch-review/

      离子 >= V4:https://ionicframework.com/docs/native/launch-review

      它在 ios >10.3 的应用程序审查(更高的变化获得审查),并简单地打开 google play 市场为 android。

      依赖注入:

      import { LaunchReview } from '@ionic-native/launch-review';
      
      constructor( 
          private _platform: Platform,
          private _launchReview: LaunchReview
      ) { }
      

      实施:

      appId = null;
      if (this._platform.is('android')) {
          appID = '_COM.ANDROID.PACKAGE.NAME_';
      } else if (this._platform.is('ios')) {
          appID = '_APPLEID_';
      }
      
      if (appID) {
          if (this._launchReview.isRatingSupported()) {
              // For iOS > 10.3
              this._launchReview.rating().then((result) => {
                  alert(result);
              });
           } else {
              this._launchReview.launch(appID);
           }
      }
      

      【讨论】:

        【解决方案5】:

        Ionic 5+ / Capacitor 3+ 应用程序

        我用过这个插件:https://ionicframework.com/docs/native/app-rate

        npm install cordova-plugin-apprate
        npm install @ionic-native/app-rate
        npm install cordova-plugin-dialogs
        npm install cordova-plugin-nativestorage
        ionic cap sync
        

        .ts

        writeAppReview(): void {
            this.appRate.setPreferences({
              displayAppName: 'My Networks',
              usesUntilPrompt: 3,
              promptAgainForEachNewVersion: false,
              storeAppURL: {
                ios: 'application id in AppStore',
                android: 'market://details?id=net.mynetworks.mymobileapp',
              },
              customLocale: {
                title: 'Enjoy using %@?',
                message: 'Recommend %@ to others by leaving a rating.',
                cancelButtonLabel: 'No, Thanks',
                laterButtonLabel: 'Later',
                rateButtonLabel: 'Rate It Now',
              },
              callbacks: {
                onRateDialogShow: (callback): any => {
                  console.log('rate dialog shown!');
                },
                onButtonClicked: (buttonIndex): any => {
                  console.log('Selected index: -> ' + buttonIndex);
                },
              },
            });
        
            this.appRate.promptForRating(true);
          }
        

        【讨论】:

          猜你喜欢
          • 2016-10-13
          • 1970-01-01
          • 1970-01-01
          • 2016-01-23
          • 1970-01-01
          • 1970-01-01
          • 2013-02-04
          • 2012-09-17
          • 1970-01-01
          相关资源
          最近更新 更多