Skip to content

JackTing/jpush-unity3d-plugin

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 

Repository files navigation

JPush Unity3d Plugin

这是极光推送官方支持的 Unity3d 插件(Android & iOS)。

导入到 Unity 项目

  • 搭建好unity3d(ios/android)开发环境

  • 将git下来的jpush-unity3d-plugin/Plugins导入到Unity中

集成 JPush Unity Android SDK

基本动作

  • 替换AndroidManifest.xml里的包名
    将其中的“com.jpush.unity3dplugin”全部替换成你在JPush服务器上创建的应用的应用包名.

  • 配置Appkey
    将其中的"JPUSH_APPKEY"值替换成应用详情里应用标(AppKey)的值.

  • 配置项目里的包名
    在unity中选择"File---Build Settings---Player Settings...",将"Identification"选项下的"Bundle Idenifier*" 设置为应用的包名.

  • 运行
    设置OK,直接"Build&Run"即可.

API 功能说明

  • initJPush(string gameObject, string func)
    功能描述:启用JPush推送服务.
    参数说明:

    • gameObject 游戏对象;
    • func 回调的方法名.
  • stopJPush(string gameObject, string func)
    功能描述:停止JPush推送服务(必须通过resumeJPush再次启用.)
    参数说明:

    • gameObject 游戏对象;
    • func 回调的方法名.
  • resumeJPush(string gameObject, string func)
    功能描述:重新启用JPush推送服务(如果是通过stopJPush来停止的,再次启用必须调用此方法).
    参数说明:

    • gameObject 游戏对象;
    • func 回调的方法名.
  • setTags(string gameObject, string func, string tags)
    功能描述:设置设备标签.
    参数说明:

    • gameObject 游戏对象;
    • func 回调的方法名;
    • tags 为多个Tag组成的字符串.(Tag为大小写字母,数字,下划线,中文; 多个用逗号分隔).
  • setAlias(string gameObject, string func, string alias)
    功能描述:设置设备别名.
    参数说明:

    • gameObject 游戏对象;
    • func 回调的方法名;
    • alias 为大小写字母,数字,下划线,中文组成的字符串.
  • setPushTime(string gameObject, string func, string days, string start_time, string end_time)
    功能描述:设置接收推送的时间段.
    参数说明:

    • gameObject 游戏对象;
    • func 回调的方法名;
    • days 为0-6之间由","连接而成的字符串;
    • start_time 为0-23的字符串;
    • end_time 为0-23的字符串.

提示: 在 Plugins\Android\src 目录下是一些 java 文件,你可以将其引入到 android 工程中对它们进行扩展。重新生成jar替换掉 unity工程中 Assets\Plugins\Android 目录下的 JPush_Bridge.jar 文件.

Example 说明

在unity Assets\Plugins\Demo下的 PluginsDemo.cs 文件是一个测试脚本,其运行结果如下:

sdf

  • initJPush
    点击按钮会启动JPush推送服务;在JPush服务上推送一个通知可以再通知栏中显示出来.

  • stopJPush
    点击按钮会停止JPush推送服务;在JPush服务上推送的任数据都不会接收.

  • resumeJPush
    点击按钮会重新启动JPush推送服务.

  • setTags
    点击按钮并在输入框中输入tags的内容;如果出现“set tags success” 提示,则表明设置设备标签成功.

  • setAlias
    点击按钮并在输入框输入Alias的内容;如果出现"set Alias success" 提示,则表明设置设备别名成功.

  • showMessage
    点击按钮后,如果有从服务器推送消息,那么成功的情况下会在输入框中显示出来.

  • addTrigger --- setPushTime
    点击按钮,则该应用会监听"setPushTime"事件,并同时出发"setPushTime"设置接收推送的时间段.

  • removeTrigger --- setPushTime
    点击按钮,则会将"setPushTime"移除.

集成 JPush Unity iOS SDK

  • 在Unity3d游戏场景中,新建一个空的 Gameobject,将其名称修改为JPushBinding,挂载 JPushBinding.cs

  • 生成ios工程,并打开该工程

  • 添加必要的框架:

CoreFoundation.framework
CFNetwork.framework
SystemConfiguration.framework
CoreTelephony.framework
CoreGraphics.framework
Foundation.framework
UIKit.framework
Security.framework
libz.dylib
  • 在工程中创建一个新的 Property List 文件,并将其命名为 PushConfig.plist,填入Portal 为你的应用提供的 APP_KEY 等参数

  • 找到 xcode 工程 Libraries 文件夹的 APServer.h,拖入 project 中(或者点击右键,点击 add files to "project name")

  • 在 UnityAppController.mm 中添加头文件 APServer.h

#import "APService.h"
  • 在 UnityAppController.mm 中添加监听系统事件,相应地调用 JPush SDK 提供的 API 来实现功能
  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  {
  // Required
	#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1
	    if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
	        //可以添加自定义categories
	        [APService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
	                                                       UIUserNotificationTypeSound |
	                                                       UIUserNotificationTypeAlert)
	                                           categories:nil];
	    } else {
	        //categories 必须为nil
	        [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
	                                                       UIRemoteNotificationTypeSound |
	                                                       UIRemoteNotificationTypeAlert)
	                                           categories:nil];
	    }
	#else
	    //categories 必须为nil
	    [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
	                                                   UIRemoteNotificationTypeSound |
	                                                   UIRemoteNotificationTypeAlert)
	                                       categories:nil];
	#endif
  // Required
          [APService setupWithOption:launchOptions];
          return YES;
 }
  	- (void)application:(UIApplication *)application 	didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
      		// Required
      		[APService registerDeviceToken:deviceToken];
  		}
 	 - (void)application:(UIApplication *)application 	didReceiveRemoteNotification:(NSDictionary *)userInfo {
     	 // Required
     	 [APService handleRemoteNotification:userInfo];
 	 }

Example 说明

  • 新建一个Unity3d的工程,将Examples/PluginsDemo.cs拖到Main Camera对象上生成相应的ios项目即可

About

JPush's officially supported Unity3d plugin (Android & iOS). 极光推送官方支持的 Unity3d 插件(Android & iOS)。

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 83.3%
  • Java 7.5%
  • Objective-C 4.7%
  • Objective-C++ 4.5%