CustomPushNotificationBuilder
如果您想对状态栏通知进行任何修改,Urban Airship建议您创建自定义通知,包括轻松更改图标.
不幸的是,使用RemoteView
for通知会带来许多与自定义制造商和/或平台特定皮肤相关的不必要的含义,包括文本颜色和对私有资源的引用(例如@*android:drawable/notify_panel_notification_icon_bg_tile
在Honeycomb/ICS上).
必须有一种简单的方法来交换图标而不使用RemoteView
.怎么样?
android urbanairship.com android-notifications android-notification-bar
从git hub(https://github.com/urbanairship/phonegap-ua-push)上的最新示例,以及Phonegap/Cordova最新版v2.3.0的全新版本,我们在iOS注册设备时遇到了麻烦UA.在我们更新到最新版之前,我们没有问题.我们正在注册这样的设备:
function on_reg(error, pushID) {
console.log("UA Registration complete.")
}
push = window.pushNotification
push.registerEvent('registration', on_reg)
Run Code Online (Sandbox Code Playgroud)
但每当我们调用该代码时,我们会收到一条错误消息" 设备令牌为零.稍后将尝试注册 ".除非从未发生过.
这是日志:
2013-01-09 17:38:29.378分组[271:907] [D] - [UAPush updateRegistration] [第589行]检查注册状态
2013-01-09 17:38:29.380分组[271:907] [D] - [UAPush updateRegistration] [第609行]设备令牌为零.稍后将尝试注册
2013-01-09 17:38:29.744分组[271:907] [D] + [UAKeychainUtils getDeviceID] [第275行]从钥匙串中检索设备ID信息.
2013-01-09 17:38:29.745分组[271:907] [D] + [UAKeychainUtils getDeviceID] [第279行]设备ID结果不是nil.
2013-01-09 17:38:29.746分组[271:907] [D] + [UAKeychainUtils getDeviceID] [第288行]已加载设备ID:C1E75722-ED34-4513-BBA5-CB9EDEBBD117
2013-01-09 17:38:29.747分组[271:907] [D] + [UAKeychainUtils getDeviceID] [第289行]已加载型号名称:iPhone4,1
2013-01-09 17:38:32.724分组[271:907] [D] - [UAAnalytics requestDidSucceed:response:responseData:] [Line 461] Google Analytics数据已成功发送.状态:200
我们做错了什么?
根据我的理解,当应用程序正在运行或在前台并且收到推送通知时,应用程序不应显示任何警报,但应用程序委托将调用didReceiveRemoteNotification
委托方法,我应该在该回调中处理推送通知.
当应用程序在后台时,推送通知应仅显示警报/横幅.
但是,我们的应用程序在应用程序运行时或在某个时间(而不是所有时间)在前台获得推送通知警报.我想知道它是否是iOS 7中的新功能(我从未听说过这个)或是因为我正在使用用户的UrbanAirship
iOS应用程序的推送通知alias
.该应用程序将在运行时显示推送警报并运行回调didReceiveRemoteNotification
.
抓住我的头.有谁知道为什么?
我的服务器在GAE(Java)上运行,我正在使用Urban Airship服务来提供推送通知.当然,当我使用他们的网络界面发送测试通知时,一切正常,但我想在我的GAE app/server中添加一个测试按钮,让它触发UA发送推送.
问题是,到目前为止我看到的所有示例都没有针对GAE的Java库进行编译.
有没有人有任何他们想要分享构建的Java示例代码并在GAE下运行以通过Urban Airship触发推送通知?
谢谢!
我试图在我的Android应用程序中集成Urban Airship PUSH通知时遇到问题.
我认为我在AndroidManifest集中拥有所有权限和意图过滤器,但是在尝试设置我的AirshipConfigOptions之后,应用程序立即崩溃:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AirshipConfigOptions options = AirshipConfigOptions.loadDefaultOptions(this);
...
}
Run Code Online (Sandbox Code Playgroud)
我的错误日志说:
java.lang.NoClassDefFoundError: com.urbanairship.AirshipConfigOptions
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
我正在研究一个简单的原型,需要测试从一个设备向另一个设备发送推送通知.
我已通过电子邮件发送Urban Airship为我的应用程序打开"允许从设备推送" - 他们确实打开了它.
我正在尝试使用NSURLConnection从设备发送推送通知.
这是我的代码:
- (void) test {
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://go.urbanairship.com/api/push"]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSDictionary * push = @{@"device_tokens":@[@"<token>"], @"aps":@{@"alert":@"TEST", @"sound":@"default"}};
NSData * pushdata = [NSJSONSerialization dataWithJSONObject:push options:0 error:NULL];
[request setHTTPBody:pushdata];
[NSURLConnection connectionWithRequest:request delegate:self];
}
- (void) connection:(NSURLConnection *) connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *) challenge {
if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodHTTPBasic]) {
NSURLCredential * credential = [[NSURLCredential alloc] initWithUser:@"<app key>" password:@"<app secret>" persistence:NSURLCredentialPersistenceForSession];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
[credential release];
}
}
- (void) connection:(NSURLConnection *) connection …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的一个iOS应用程序配置UrbanAirship.我已按照教程页面上的说明完成了配置:http: //docs.urbanairship.com/build/ios.html
但是当我构建项目时,我收到以下错误:
Unknown type name 'UIBackgroundFetchResult'
错误在文件UAPush.h中发生了四次(从UrbanAirship网站下载)我也尝试在UrbanAirship教程页面上运行zip文件中提供的示例代码,它也有同样的问题.还有其他人面临同样的问题吗?任何帮助将受到高度赞赏.
我正在尝试将Urban Airship Library添加到我的项目中.我完全按照步骤操作,但是当我构建时,我得到了这个错误
No resource found that matches the given name: attr'android:elevation'
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- From: file:/Users/build/workspace/android-library/UrbanAirship/src/main/res/values-v21/styles.xml -->
<eat-comment/>
<style name="Widget.UrbanAirship.InAppMessage.Banner" parent="Base.Widget.UrbanAirship.InAppMessage.Banner">
<item name="android:background">@drawable/ua_iam_background</item>
<item name="android:elevation">@dimen/ua_iam_banner_elevation</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
这是我的gradle文件依赖项
compile 'com.android.support:support-v4:22.0.0'
compile 'com.android.support:cardview-v7:22.0.0'
compile 'com.google.android.gms:play-services-gcm:7.0.0'
compile 'com.google.android.gms:play-services-location:7.0.0'
Run Code Online (Sandbox Code Playgroud)
我的targetSdkVersion是21,我还从SDK管理器更新了我的API
http://docs.urbanairship.com/platform/android.html供参考
请帮我.谢谢!
更新1:Android部分在gradle中
android {
compileSdkVersion 19
buildToolsVersion "21.1.1"
defaultConfig {
applicationId "com.example"
minSdkVersion 14
targetSdkVersion 21
multiDexEnabled true
renderscriptTargetApi 22
renderscriptSupportModeEnabled true
}
dexOptions {
javaMaxHeapSize "4g"
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE' …
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习如何使用城市飞艇发送推送通知,为此,我创建了一个非常简单的使用它的虚拟应用程序。
该应用程序有一个自定义自动驾驶仪和一个自定义通知工厂,以便测试某些功能。在 API 版本 >19 的 Android 上一切正常。
但是,对于版本 19(我需要支持的最低版本)的设备,自动驾驶仪永远不会初始化,因此,每当我尝试访问UAutopilot.shared()...
应用程序时,都会因错误而崩溃
共享之前必须调用起飞
即使打电话也Autopilot.autoTakeoff(application)
解决不了问题。
主要活动:
public class MainActivity extends AppCompatActivity{
TextView mTextView;
Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.text);
mButton = (Button)findViewById(R.id.button2);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mTextView.setText(UAirship.shared().getPushManager().getChannelId());
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
定制自动驾驶仪:
class CustomAutopilot extends Autopilot {
@Override
public void onAirshipReady(UAirship airship) {
Logger.info("onAirshipReady");
airship.getPushManager().setUserNotificationsEnabled(true);
airship.getPushManager().setNotificationFactory(new CustomNotificationFactory(UAirship.getApplicationContext()));
}
@Nullable
@Override
public AirshipConfigOptions createAirshipConfigOptions(@NonNull Context context) { …
Run Code Online (Sandbox Code Playgroud) 有没有人在iOS上做过这样的事情?这是挑战,在我的应用程序中我已经配置了UrbanAirship方法并且可以访问用户当前的消息作为UAInboxMessage数组并将它们显示在一个表格中,其中单元格标题为其消息title,ok ...现在,查看每个对象属性,他们有一个messageURL和messageBodyURL,当我请求那些url的Urban请求凭据时,好的,当我触摸我的tableView上的一行时,我将消息发送给DetailViewController作为属性,在该视图中我有一个UIWebView,我想要的是显示消息Rich content,这是以前在Urban Console中配置的html,在我的DetailViewController的UIWebView中,所以我试图通过UAWebViewCallData发送它网址,网页浏览和消息,但没有运气......
[UAWebViewCallData callDataForURL:message.messageBodyURL webView:_webView message:message];
Run Code Online (Sandbox Code Playgroud)
没工作.
我尝试将UA自定义委托设置为我的webview,如UAWebViewDelegate以获取信息,并且我失败了,这些委托从未被调用过.
并手动显示文档https://docs.urbanairship.com/platform/ios/#display
并且再次没有工作,然后在Android上找到一个朋友,有一个UAWebView自定义类,他可以从中扩展其webview,只是写这个,消息正文显示
extendedWebView.loadRichPushMessage(this.message);
Run Code Online (Sandbox Code Playgroud)
尝试在iOS上找到类似但没有运气的东西.
请帮忙!!