ข้ามไปที่เนื้อหา

Unreal

Hive SDK Unreal Engine ให้การตั้งค่าสำหรับการใช้ฟีเจอร์การแจ้งเตือน.

แอนดรอยด์

ส่วนนี้อธิบายการตั้งค่าที่จำเป็นสำหรับ Android.

การเลือกบริการพุช

  1. ใน Unreal Editor ให้คลิก Edit > Project Settings ในเมนู หน้าต่าง Project Settings จะปรากฏขึ้น
  2. ในแผงด้านซ้ายของหน้าต่าง Project Settings ให้คลิก Dependency – Android ภายใต้ Hive SDK.
  3. ในพาเนลด้านขวาของหน้าจอ Hive SDK Dependency – Android ให้เลือกบริการ push ที่จะใช้สำหรับ Push Type ในส่วน Push ตัวอย่างเช่น หากคุณใช้ Firebase Cloud Messaging ให้เลือก Google FCM.

Hive การตั้งค่าคอนโซล: การส่งข้อมูลระยะไกล

ในการใช้ Remote Push คุณต้องขอใบรับรอง Push จาก Google หรือ Apple Console และ ลงทะเบียนใน Hive console

iOS

ส่วนนี้อธิบายการตั้งค่าที่จำเป็นสำหรับ iOS.

การเลือกบริการพุช

Unreal iOS รวมบริการ Apple Push Notification Service โดยค่าเริ่มต้น

การปรับเปลี่ยน Unreal Engine

ในการใช้ฟีเจอร์การแจ้งเตือนที่จัดเตรียมโดย Hive SDK คุณจำเป็นต้องปรับเปลี่ยน Unreal Engine เพิ่มบรรทัดระหว่างความคิดเห็น Add และ Add End หรือบรรทัดที่มีความคิดเห็น Add ในไฟล์ด้านล่าง


Engine/Source/Runtime/ApplicationCore/Public/IOS/IOSAppDelegate.h

DECLARE_MULTICAST_DELEGATE_FourParams(FOnOpenURL, UIApplication*, NSURL*, NSString*, id);
static FOnOpenURL OnOpenURL;

// Add
DECLARE_MULTICAST_DELEGATE_ThreeParams(FOnOpenURLwithOptions, UIApplication*, NSURL*, NSDictionary* );
static FOnOpenURLwithOptions OnOpenURLwithOptions;
// Add End

// parameters passed from openURL
@property (nonatomic, retain) NSMutableArray* savedOpenUrlParameters;
@property (nonatomic, retain) NSMutableArray* savedOpenUrlWithOptionsParameters;    // Add

Engine/Source/Runtime/ApplicationCore/Private/IOS/IOSAppDelegate.cpp

extern bool GShowSplashScreen;
FIOSCoreDelegates::FOnOpenURL FIOSCoreDelegates::OnOpenURL;
FIOSCoreDelegates::FOnOpenURLwithOptions FIOSCoreDelegates::OnOpenURLwithOptions;  //   Add
FIOSCoreDelegates::FOnWillResignActive FIOSCoreDelegates::OnWillResignActive;
FIOSCoreDelegates::FOnDidBecomeActive FIOSCoreDelegates::OnDidBecomeActive;
TArray FIOSCoreDelegates::PushNotificationFilters;
@synthesize AccessibilityCacheTimer;
#endif
@synthesize savedOpenUrlParameters;
@synthesize savedOpenUrlWithOptionsParameters;    // Add
@synthesize BackgroundSessionEventCompleteDelegate;
          GShowSplashScreen = false;
   }, TStatId(), NULL, ENamedThreads::ActualRenderingThread);
}
// Add
   for (NSDictionary* openUrlParameter in self.savedOpenUrlWithOptionsParameters)
   {
       UIApplication* application = [openUrlParameter valueForKey : @"application"];
       NSURL* url = [openUrlParameter valueForKey : @"url"];
       NSDictionary \* options = [openUrlParameter valueForKey : @"options"];
FIOSCoreDelegates::OnOpenURLwithOptions.Broadcast(application, url, options);
}
self.savedOpenUrlWithOptionsParameters = nil; // clear after saved openurl delegate running
// Add End
for (NSDictionary\* openUrlParameter in self.savedOpenUrlParameters)
{
UIApplication\* application = [openUrlParameter valueForKey : @"application"];
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
   // save launch options
   self.launchOptions = launchOptions;
#if PLATFORM_TVOS
   self.bDeviceInPortraitMode = false;
#else
   // use the status bar orientation to properly determine landscape vs portrait
   self.bDeviceInPortraitMode = UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]);
   printf("========= This app is in %s mode\n", self.bDeviceInPortraitMode ? "PORTRAIT" : "LANDSCAPE");
#endif
   // check OS version to make sure we have the API
   OSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
   if (!FPlatformMisc::IsDebuggerPresent() || GAlwaysReportCrash)
   {
//        InstallSignalHandlers();
   }
   self.savedOpenUrlParameters = [[NSMutableArray alloc] init];
   self.savedOpenUrlWithOptionsParameters = [[NSMutableArray alloc] init];     //  Add
   self.PeakMemoryTimer = [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(RecordPeakMemory) userInfo:nil repeats:YES];
#if !BUILD_EMBEDDED_APP
    return YES;
}
// Add
 //# Use option

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary \*)options
{
#if !NO\_LOGGING
NSLog(@"%s", "IOSAppDelegate openURL options\n");
#endif
NSString\* EncdodedURLString = [url absoluteString];
NSString\* URLString = [EncdodedURLString stringByRemovingPercentEncoding];
FString CommandLineParameters(URLString);
// Strip the "URL" part of the URL before treating this like args. It comes in looking like so:
// "MyGame://arg1 arg2 arg3 ..."
// So, we're going to make it look like:
// "arg1 arg2 arg3 ..."
int32 URLTerminator = CommandLineParameters.Find( TEXT("://"), ESearchCase::CaseSensitive);
if ( URLTerminator > -1 )
{
CommandLineParameters.RightChopInline(URLTerminator + 3, false);
}
FIOSCommandLineHelper::InitCommandArgs(CommandLineParameters);
self.bCommandLineReady = true;
[self.CommandLineParseTimer invalidate];
self.CommandLineParseTimer = nil;
// Save openurl infomation before engine initialize.
// When engine is done ready, running like previous. ( if OnOpenUrl is bound on game source. )
if (bEngineInit)
{
FIOSCoreDelegates::OnOpenURLwithOptions.Broadcast(app, url, options);
}
else
{
#if !NO\_LOGGING
NSLog(@"%s", "Before Engine Init receive IOSAppDelegate openURL\n");
#endif
NSDictionary\* openUrlParameter = [NSDictionary dictionaryWithObjectsAndKeys :
app , @"application",
url, @"url",
options, @"options",
nil];
[savedOpenUrlWithOptionsParameters addObject : openUrlParameter];
}
return YES;
}
// Add End
FCriticalSection RenderSuspend;
- (void)applicationWillResignActive:(UIApplication \*)application
{

Hive การตั้งค่าคอนโซล: การผลักดันระยะไกล

ในการใช้ Remote Push คุณต้องขอใบรับรอง Push จาก Google หรือ Apple Console และ ลงทะเบียนใน Hive console