Unity 实现IOS应用内弹出评分框

2021-10-25  本文已影响0人  Razy西南
ios.jpeg

第一种最简单的方式直接跳转到AppStore 应用详情页,用户去评分。

#if UNITY_IPHONE || UNITY_EDITOR
const string APP_ID = [you app id];
var url = string.Format("itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id={0}", APP_ID);
Application.OpenURL(url);
#endif

AppID就是产品id,后台可查看。

第二种,直接在应用内弹出评分框,不用跳转到AppStore。
首先创建一个.h和.mm文件,后缀自己添加,代码为固定代码。
下面是头文件代码:

//  UnityStoreKit.h
//  UnityStoreKit
//
//  Created by mac on 2017/12/14.
//  Copyright © 2017年 mac. All rights reserved.
//
 
#import <Foundation/Foundation.h>
#import <StoreKit/StoreKit.h>
 
@interface UnityStoreKit : NSObject
 
@end

下面是.mm代码:

//
//  UnityStoreKit.m
//  UnityStoreKit
//
//  Created by mac on 2017/12/14.
//  Copyright © 2017年 mac. All rights reserved.
//
 
#import "UnityStoreKit.h"
 
 
@implementation UnityStoreKit
#if defined(__cplusplus)
extern "C"{
#endif
    void _goComment()
    {
        if([SKStoreReviewController respondsToSelector:@selector(requestReview)]) {// iOS 10.3 以上支持
            [SKStoreReviewController requestReview];
        } else { // iOS 10.3 之前的使用这个
            NSString *appId = @"1280215473";
            NSString  * nsStringToOpen = [NSString  stringWithFormat: @"itms-apps://itunes.apple.com/app/id%@?action=write-review",appId];//替换为对应的APPID
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:nsStringToOpen]];
        }
    }
#if defined(__cplusplus)
}
#endif
 
@end

这两个文件放在Unity里面的plugins/IOS文件夹下。

创建一个UnityStoreKitMgr,管理是否弹出评分框:

using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
public class UnityStoreKitMgr : MonoBehaviour {
 
    private static UnityStoreKitMgr _instance;
    public static UnityStoreKitMgr Instance{
        get{
            if(_instance==null)
            {
                GameObject go=  new GameObject ("UnityStoreKitMgr");
                _instance=go.AddComponent<UnityStoreKitMgr> ();
                DontDestroyOnLoad (go);
            }
            return _instance;
        }
    }
     
 
    [DllImport("__Internal")]
    private static extern void _goComment();
    public  void GoToComment()
    {
        #if UNITY_IPHONE
           _goComment();
         #endif
    }
     
}

在需要弹框处调用

 UnityStoreKitMgr.Instance.GoToComment();
上一篇下一篇

猜你喜欢

热点阅读