启动时OneSignal Unity iOS崩溃

时间:2017-05-04 08:35:04

标签: ios xcode unity3d crash onesignal

我开始研究使用 OneSignal v1.15.2 构建的项目。

在Android上一切正常。 在iOS上,我试着遵循这个:https://documentation.onesignal.com/v3.0/docs/unity-sdk-setup points [5.1 - 5.7]:他们只是添加UserNotifications.framework

现在,如果我启动我的应用程序,它会崩溃并且消息是:" dyld:找不到图像"。 如果我删除了UserNotifications.framework,那么所有游戏都可以运行,但是通知。

OneSignal的当前版本与过去有何不同?我应该遵循另一个设置流程指南吗?

我正在使用 Unity 5.3.1p4 XCode 8.2.1 (我使用的是XCode 8.3.1并且通知效果很好,但这个新版本有一些文件证明与Unity 5.3.1p4不兼容。

任何人都可以帮助我吗?

谢谢。

最好的关注, 安德烈。

1 个答案:

答案 0 :(得分:1)

值得一提的是,我使用Unity 5.6.0和Xcode 8.3.2与SDK Unity5OneSignalSDK.unitypackage以及点5.1到5.7,足以让推送通知正常工作。

我也使用以下后期处理器自动执行后台模式以检查“远程通知”...我找不到使用UserNotifications.framework自动链接的方法...让我知道是否有人有关于如何做到这一点的想法。

// ---------------------------------------------------------------------------------------------------------------------
public static class XCodePostProcess
{

    // -----------------------------------------------------------------------------------------------------------------
    [PostProcessBuild(100)]
    public static void OnPostprocessBuild( BuildTarget target, string pathToBuildProject )
    {
        if (target == BuildTarget.iOS)
        {
            UpdateInfoPlist( pathToBuildProject );
        }
    }

    // -----------------------------------------------------------------------------------------------------------------
    private static void UpdateInfoPlist( string path )
    {

        // load plist
        string plistPath = Path.Combine( path, "Info.plist" );
        PlistDocument plist = new PlistDocument();
        plist.ReadFromString( File.ReadAllText( plistPath ) );

        //Get Root
        PlistElementDict rootDict = plist.root;

        //Add Necessary Things
        PlistElementArray LSApplicationQueriesSchemes = rootDict.CreateArray( "LSApplicationQueriesSchemes" );
        LSApplicationQueriesSchemes.AddString( "itms-beta" );  // test flight

        // localizations
        PlistElementArray CFBundleLocalizations = rootDict.CreateArray( "CFBundleLocalizations" );
        CFBundleLocalizations.AddString( "en" );    // english
        CFBundleLocalizations.AddString( "de" );    // german
        CFBundleLocalizations.AddString( "fr" );    // french
        CFBundleLocalizations.AddString( "es" );    // spanish

        // for OneSigna remote notifications
        PlistElementArray UIBackgroundModes = rootDict.CreateArray( "UIBackgroundModes" );
        UIBackgroundModes.AddString( "remote-notification" );

        //WriteFile
        File.WriteAllText (plistPath, plist.WriteToString ());

    }

}