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();